DRYな備忘録

Don't Repeat Yourself.

error_logの出力先を設定する【PHP】【apache2】【debian】

【問題】

ドキュメントルート以下のsample.phpに以下のような記述をした

<?php
// phpのerror_log()の出力先はどこなん(´;ω;`)
error_log('(´・ω・`)');
phpinfo();

で、ブラウザから /sample.php にアクセスするものの、どこに出力されてるのかわからん。

【目標】

任意に指定したファイルにerror_log()の出力を書き込みたい

【調査】

【記録】

_とりあえず上記に書かれたように、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と、cliphp.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 しつつアクセスすると

f:id:otiai10:20130518125726p:plain

やったー!

【まとめ】

  1. php.ini のerror_logの設定見る. 適宜編集.
  2. error_log出力先に設定したファイルの存在やオーナーを確認する.

【雑感】

やっぱり知らない人と黙々会やるの、めっちゃ捗るしいいね!

 

 

 

学生のためのPHP言語 ─基礎からウェブシステムまで

学生のためのPHP言語 ─基礎からウェブシステムまで

 

 

かんたんWebプログラミング! これから始める人のPHP学習帖

かんたんWebプログラミング! これから始める人のPHP学習帖