• 締切済み

【PHP】書き込みできません

PHP5.3の環境でファイル書き込みのロジックがうまくいかずに困っています。 環境は下記の通りです。 Apache 2.2.2 PHP 5.3.3 コードは下記の通りです。 >>CODE $file_path = "/home/xxxxx/logs/test.txt"; echo file_exists($file_path); echo "file_path1=".$file_path; if ( file_exists($file_path) ) { echo "file_path2=".$file_path; // ファイルポインタ取得 if ( ($fp = fopen($file_path, 'a')) !== FALSE ) { // ログは追記 echo "file_path3=".$file_path; // ファイルポインタに書き込み fwrite($fp, $date."\n"); fwrite($fp, $body); fwrite($fp, "----------------------------------------------------\n"); // ファイルポインタクローズ fclose($fp); $flg = true; } } <<CODE 権限は下記の通りです。 logs 777 test.txt 777 現象は下記の通りです。 echo文のfile_path1は表示されます。 echo文のfile_path2及びfile_path3は表示されません。 $file_path="/home/logs/test.txt";に変更すると、 echo文のfile_path1及びfile_path2が表示されます。 echo文のfile_path3は表示されません。 ファイルが存在することはlsで確認したので間違いありません。 権限も777にしているので、何がおかしいのか困り果ててしまい、初めて投稿させて頂きました。 PHPやApacheの設定ファイル等も問題あるのでしょうか。 どうぞご指摘お願いいたします。

みんなの回答

  • axuaxua
  • ベストアンサー率36% (82/223)
回答No.2

$file_pathの最初の/を削ったらどうでしょう 念のため動作したコードを乗せます(2個目以降はエラーのみechoするようにしてあります $date = 'date'; $body = 'body'; $file_path = "home/xxxxx/logs/test.txt"; echo "file_path1={$file_path}\n"; if (file_exists($file_path)){ if(($fp = fopen($file_path, 'a')) === FALSE) echo "error/a:{$file_path}\n"; }else if(($fp = fopen($file_path, 'w')) === FALSE){ echo "error/w:{$file_path}\n";} // ファイルポインタに書き込み fwrite($fp, $date."\n"); fwrite($fp, $body); fwrite($fp, "----------------------------------------------------\n"); fclose($fp); $flg = true;

color11
質問者

お礼

ご回答頂きありがとうございます。 お礼が遅くなってしまい、申し訳ございません。 ご回答頂いた通り、先頭の"/"を外してみましたが、 2つ目のif文まで到達しない状態です。 axuaxua様の環境で出来たということは、私の環境が悪いのかもしれません。。。

color11
質問者

補足

CentOSのセキュリティレベル-SELinuxをEnforcingから無効にすることで、 通るようになりました。 お騒がせしてしまい、申し訳ございませんでした。 ご協力ありがとうございました。

noname#176467
noname#176467
回答No.1

DVD CD-R等のデスクドライバー、インクコントローラーのソフトをインストールしていますか? どの様なOSをつかっているのかはわかりませんけど、ドライバーをインストールしてなければ書き込みは出来ません。

color11
質問者

お礼

ご回答ありがとうございます。 お礼が遅くなってしまい、申し訳ございません。 OSはCentOS5.9です。 ご回答いただいた内容を確認してみます。