2011-06-24 11 views
6

私はcrontabで実行するようにスケジュールされたスクリプトを持っています。私はどこでもPHPエラーを見ることができなかったことに気づいた。私は/ var/log/syslogや他の場所にログオンしたPHPエラーを見たいと思っていました。私は/var/log/php-errors.logにエラーを記録するためにphp.iniを設定しようとしましたが、アクセス権を確認してApacheのサービスを再起動しました。syslogに表示するPHPエラーを取得する方法

+0

php.iniには何を入れましたか? 'error_log'と' log_errors'と 'error_reporting'はファイルにロギングするためのBig 3です。 –

+0

error_log = /var/log/php_errors.log、log_errors =オン、error_reporting = E_ALL&〜E_DEPRECATED – madkris24

+0

実行しているアカウントに/ var/logとそのphp-errors.logに書き込み権限がありますか? –

答えて

2

考慮すべき2つの問題があります:

最初に、PHP CLIはApache経由で実行されるPHPのバージョンとは異なるphp.iniを使用します。 CLIバージョンでerror_logを編集していることを確認してください。

第2に、ログファイルがcronを実行するユーザーによって書き込み可能であることを確認してください。通常、ログファイルはあなたのユーザーアカウントによって書き込み可能ではないため、権限を編集する必要があります。

+0

+1の最初の文を指摘するために+1 – madkris24

+1

syslogにログするときにファイルを書きません。 syslogデーモンが行います。この答えは意味をなさない。 – itsafire

3

あなたのphp.iniにerror_log = syslogをお試しください。

6

私は私の/etc/php5/cli/php.iniファイル(I Debianを使用しています。私はあなたが使用しているものは何でものためにその同じと仮定している)でこれを持っており、それは/ var/log/messagesに、すべてのcronのエラーを書き出し:

error_reporting = E_ALL & ~E_NOTICE 
display_errors = Off 
display_startup_errors = Off 
log_errors = On 
log_errors_max_len = 0 
ignore_repeated_errors = Off 
ignore_repeated_source = Off 
report_memleaks = On 
track_errors = Off 
error_log = syslog 
1

Ubuntu 16.04では、/ dev/logはグループmysyslog(systemdによって定義されている)によって所有されています。ですから、apache2/phpがsyslogに書き込めるようにするには、ユーザwww-dataをmysyslogのグループに追加する必要があります。 addgroup www-data mysyslog

関連する問題