- ベストアンサー
fopenのエラー
[schdule_edit.php] Warning: fopen(C:\Program Files\xampp\htdocs\schedule\samplefile.txt) [function.fopen]: failed to open stream: No such file or directory in C:\xampp\htdocs\schedule\schedule_edit.php on line 55 Warning: fwrite(): supplied argument is not a valid stream resource in C:\xampp\htdocs\schedule\schedule_edit.php on line 56 Warning: fclose(): supplied argument is not a valid stream resource in C:\xampp\htdocs\schedule\schedule_edit.php on line 57 ---------------------------------------------------------------- 上記のようなエラーがでます。何が原因でこのエラーが出るのか、 色々調べたのですが自分では答えを見つ ける事ができませんでしたので、教えてください。 ---------------------------------------------------------------- [schdule_edit.php] <? if(isset($_POST["regist"])){ //全角→半角 $year=mb_convert_kana($_POST["year"],"a","UTF-8"); $month=mb_convert_kana($_POST["month"],"a","UTF-8"); $day=mb_convert_kana($_POST["day"],"a","UTF-8"); //入力チェック $error_message=array(); if(isset($_POST["year"]) && is_numeric($_POST["year"]) && $_POST["year"] > 2007){ $year=$_POST["year"]; }else{ $error_message[]="年を正しく入力してください"; } if(isset($_POST["month"]) && is_numeric($_POST["month"]) && $_POST["month"] > 0 && $_POST["month"] < 13){ $month=$_POST["month"]; }else{ $error_message[]="月を正しく入力してください"; } if(isset($_POST["day"]) && is_numeric($_POST["day"]) && $_POST["day"]>0 && $_POST["day"]<32){ $day=$_POST["day"]; }else{ $error_message[]="日を正しく入力してください"; } if(isset($_POST["title"])){ if(strstr($_POST["title"],"|")){ $error_message[]="タイトルに|は使えません"; }else{ } $error_message[]="タイトルを入力してください"; } } if(isset($_POST["body"])){ if(strstr($_POST["body"],"|")){ $error_message[]="内容に|は使えません"; }else{ } $error_message[]="内容を入力してください"; } if(!count($error_message)){ //内容の改行を<br>に変換 $body=str_replace(array("\r","\n","\r\n"),"<br>",$body); $filename = "C:\\Program Files\\xampp\\htdocs\\schedule\\samplefile.txt"; $schedule_date =sprintf("%04d%02d%02d",$year,$month,$day); $line=$schedule_dare."|".$title."|".$body; $fp = fopen($filename, "w"); fwrite($fp, $line); fclose($fp); if(count($error_message)){ foreach ($error_message as $value){ print($value); } } } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>スケジュール</title> </head> <body> <form action="schedule_edit.php" method="post"> <input type="text" size="4" name="year">年 <input type="text" size="4" name="month">月 <input type="text" size="4" name="day">日 <br><br> タイトル:<input type="text" size="31" name="title"> <br><br> 内容:<br> <textarea name="body"></textarea> <br><br> <input type="submit" name="regist" value="登録"> </form> </body> </html> ---------------------------------------------------------------- [schedule_list.php] <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>スケジュール</title> </head> <body> <?php $filename = "C:\\Program Files\\xampp\\htdocs\\schedule\\samplefile.txt"; $schedule_list = file($filename); foreach ($schedule_list as $line) { // (1) 取得したファイルの各行について、日付、タイトル、本文に分ける list($schedule_date, $title, $body) = explode("|", $line); // 分けた変数を$schedule_date、$title、$bodyに print("日付:$schedule_date タイトル:$title 内容:$body <br>"); } ?> </body> </html> ---------------------------------------------------------------- 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
原因は > No such file or directory ではないのですか? 見たところ、PHPスクリプトは C:\xampp\htdocs\schedule\schedule_edit.php で、開こうとしているファイルは C:\Program Files\xampp\htdocs\schedule\samplefile.txt と、パスが異なっているのが気になります。 推測ですが、本当は C:\xampp\htdocs\schedule\samplefile.txt を開きたい、ということではありませんか?
その他の回答 (1)
- memphis
- ベストアンサー率40% (975/2395)
エラーメッセージに書いてあるようにファイルかフォルダが無いからでは? もし、ファイルもフォルダもある場合は、アクセス権が無いかも知れませんので、それも確認して下さい。 残りのエラーは、ファイルオープンが失敗しているのにファイル処理をしているからです。 エラー処理も正しく行いましょう!
お礼
回答ありがとうございました。 間違っていたところは $filename = "C:\\Program Files\\xampp\\htdocs\\schedule\\samplefile.txt"; でした。初歩的なミスで恥ずかしいです。 教えていただいて感謝しています。ありがとうございました。
お礼
回答ありがとうございます。 Cerenさんに言われたとおりでした。スペルミスだろうと一生懸命 間違ったところを探していました。 恥ずかしいです。 指摘されて気がついた次第です。 ありがとうございました。