2. メンテナンス・トラブルシュート - PHP - ログの出力 - php.ini の編集

 
2.1 php.ini の編集
2.2 パスやファイル名をどうするか
2.3 ローテーション

2.1 php.ini の編集

/usr/local/etc/php.ini
 を編集してログを出力するようにします。

; Log errors to specified file. PHP's default behavior is to leave this value
; empty.
; http://php.net/error-log
; Example:
;error_log = php_errors.log
; Log errors to syslog (Event Log on Windows).
;error_log = syslog
 のあたりですな。  デフォルトではすべてコメントになっていて、すべてコメントだと apache のエラーログに出力されることになります。

; Log errors to specified file. PHP's default behavior is to leave this value
; empty.
; http://php.net/error-log
; Example:
;error_log = php_errors.log
; Log errors to syslog (Event Log on Windows).
;error_log = syslog

error_log = /パス/ファイル名
 ってことになります。

2.2 パスやファイル名をどうするか

 ログを出力するパスは、通常
/var/log
 ってことになりますが。  ここの所有者は「root:wheel」です。  apache は「www:www」の権限で動作しますので(Linux の場合「apache:apache」)、デフォルトでは書き込み権限がなくて、いろんな人が悩んだりしております。  わたしの場合
/var/log/www
 を作成して、その所有者を「www:www」にしておりますので、そのあたり悩まずに済みました。  ファイル名ですが「php」の章に書いております、アプリケーションからのログと一緒にしたいものですから、そこで使用しているものと同じファイル名にしました。

2.3 ローテーション

 ローテーションに関しても悩んでいる型が多くいらっしゃるようですが、わたしは
/usr/local/etc/newsyslog.conf.d/apache.conf
 に

# logfilename          [owner:group]    mode count size when  flags [/pid_file] [sig_num]
/var/log/www/*.log      www:www         644 36     *    $M1D0 BG    /var/run/httpd.pid
 とまとめて書いてあるので、アクセスログ・エラーログと同時にローテーションすることになります。  このあたり、FreeBSD の newsyslog の恩恵です。