【問題】
ドキュメントルート以下のsample.phpに以下のような記述をした
<?php // phpのerror_log()の出力先はどこなん(´;ω;`) error_log('(´・ω・`)'); phpinfo();
で、ブラウザから /sample.php にアクセスするものの、どこに出力されてるのかわからん。
【目標】
任意に指定したファイルにerror_log()の出力を書き込みたい
【調査】
- PHPのerror_log()の出力先は? - 三十路エンジニアの備忘録+α
- php.ini で設定しても出力されないエラーログをちゃんと出すポイント! - oki2a24
- Apache 実行ユーザーの設定 | 自宅サーバー Fedora
- Linuxに登録されているユーザ、グループを確認するには? - 教えてgoo
- PHP: phpinfo - Manual
【記録】
_とりあえず上記に書かれたように、phpの設定を変更
当方debianなので、
% tree /etc/php5 /etc/php5 |-- apache2 | |-- conf.d -> ../conf.d | `-- php.ini |-- cli | |-- conf.d -> ../conf.d | `-- php.ini `-- conf.d |-- curl.ini |-- mysql.ini |-- mysqli.ini |-- pdo.ini |-- pdo_mysql.ini `-- suhosin.ini 5 directories, 8 files
# apache2のphp.iniと、cliのphp.iniがあるんだな。cliはコマンドラインからの実行の設定だと思われ。ということで、
% sudo vi /etc/apache2/php.ini
で、error_logで検索すると、いくつかヒットして、
637 ; Log errors to specified file. PHP's default behavior is to leave this value 638 ; empty. 639 ; http://php.net/error-log 640 ; Example: 641 ;;error_log = /var/log/php.log 642 ; Log errors to syslog (Event Log on NT, not valid in Windows 95). 643 ;error_log = syslog
ビンゴ。なので、error_log = /var/log/php.log としてコメントアウトを外した
_え、書かれてないよ(; ・`д・´)
/var/log/php.logに書かれちゃいねえ
上記調査より、/var/log/php.logファイルのオーナーとかパーミッションの問題だった。phpinfoより、apacheプロセスの実行ユーザがwww-dataだと分かったので、
% sudo chown www-data /var/log/php.log
として、tail -f /var/log/php.log しつつアクセスすると
やったー!
【まとめ】
- php.ini のerror_logの設定見る. 適宜編集.
- error_log出力先に設定したファイルの存在やオーナーを確認する.
【雑感】
やっぱり知らない人と黙々会やるの、めっちゃ捗るしいいね!
かんたんWebプログラミング! これから始める人のPHP学習帖
- 作者: 小川淳一
- 出版社/メーカー: ソーテック社
- 発売日: 2013/11/12
- メディア: 単行本
- この商品を含むブログ (1件) を見る