外部からWebAPIを実行された際に、サーバー内のファイルに書き込み処理をしたいと考えています。
そこでPHPのfile_put_contentsで簡単に書き込み処理を追加したのですが、ファイルが作成されませんでした。いったんtouchコマンドでファイルを作成してみても、中身が追加されず、行き詰まってしまいました。
php
1 $fileName = '/tmp/test_log'; 2 $ir = is_writable($fileName); 3 $ret = file_put_contents($fileName, 'Called'.PHP_EOL, FILE_APPEND); 4 header('HTTP/1.0 200 OK'); 5 echo "ret=$ret, ir=$ir".PHP_EOL;
上記のテストPGMを作成し、curlコマンドで実行した結果は「ret=7, ir=1」となりました。
しかし /tmp ディレクトリにファイルは作成されませんでした。
また、touchコマンドで、0666 の権限で test_log ファイルを作成してから実行しても駄目でした。
apacheのerror_logを見ても、特にエラーが出力されていなかったので、この他に何を調べれば良いでしょうか。
よろしくお願いします。
【環境】
Red Hat Enterprise Linux Server release 7.3 (Maipo)
Apache/2.4.6
PHP 7.1.4 (cli) (built: Apr 11 2017 19:36:58) ( NTS )
追記:
seLinuxは無効にしています。
追記2:
apacheの書き込み先をドキュメントルート配下に変更すると成功しました。
何故なんでしょう?
ls -lコマンドの結果では権限エラーはなさそうなんですが。
-rw-rw-rw- 1 ec2-user ec2-user 0 Aug 28 19:22 test_log
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/28 12:00
退会済みユーザー
2017/08/28 13:05
2017/08/28 13:18 編集