CLI経由のPHPは、エラーを/var/log/php_errors.logに正常に記録します。
ただし、Apache + phpはエラーを記録しません。
[bla@notebook ~]$ apachectl -v
Server version: Apache/2.2.17 (Unix)
Server built: May 19 2011 03:15:39
[bla@notebook ~]$ php -v
PHP 5.3.6 with Suhosin-Patch (cli) (built: Mar 23 2011 13:28:00)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
php.iniにあります:
display_errors = On
error_reporting = E_ALL | E_STRICT
log_errors = On
error_log = php_errors.log
httpd.confで:
ErrorLog "/var/log/httpd/error_log"
許可:
[bla@notebook /]$ ls -la /var/log/httpd/
-rwxrwxr-x 1 root root 133351 21.11.2011 11:18 access_log*
-rwxrwxr-x 1 root http 1307 21.11.2011 11:18 error_log*
[bla@notebook /]$ ls -la /var/log/php_errors.log
-rwxrwxr-x 1 root http 521 14.11.2011 17:31 /var/log/php_errors.log*
ご覧のとおり、Apacheデーモンにはログファイルに書き込む権限があります。
/var/log/php_errors.logおよび/ var/log/httpd/error_logにApacheまたはPHPからのエラーはまだありません。
更新1。
Php.iniの次の行を変更しました。
error_log = php_errors.log
フルパスへ:
error_log = /var/log/php_errors.log
許可は大丈夫だった。ただし、誰かが問題を抱えている場合は、logfile 0777へのアクセス権の設定またはファイル所有者の変更をデバッグできます。
通常、ApacheとCLIには2つの別個のphp.iniファイルがあります。正しいファイルを探しているのですか?
編集:
私が考えることができる2つのオプション:
http
ログファイルに書き込むユーザーグループ-おそらくsuphpのような動作がいくつかあり、Webを介してスクリプトにアクセスすると、所有者として設定されているユーザー名(またはスクリプトのファイル所有者)として実行されます。それを変える。同じ問題がありました。
設定log_errors_max_len = 0
php.iniで私のために働いた。
PHPマニュアル :
Log_errorsの最大長をバイト単位で設定します。 error_logに、ソースに関する情報が追加されます。 デフォルトは1024であり、0は最大長をまったく適用しないことを許可します。この長さは、記録されたエラー、表示されたエラー、および$ php_errormsgに適用されますが、error_log()などの明示的に呼び出された関数には適用されません。
過去には、2つのケースでエラーログがありませんでした。
php_error_log
ファイルを変更する権限がありませんでした。.htaccess
の設定が不適切であるために発生しました。たとえば、書き換えモジュールの設定が間違っています。この場合、エラーはApache error_log
ファイルに記録されます。httpd.conf
は、Apache configが配置できる唯一の場所ではありません。
例えば:
安全な接続https://
を使用する場合、余分な設定が優先され、/opt/local/Apache2/conf/extra/httpd-ssl.conf
のようなファイルで設定を探す必要があります。
あなたはそこのようなものを見つけることができます:
ErrorLog "/var/log/Apache/ssl_error.log"
また、通常のログファイルにエラーが記録されることはありませんが、それらはすべてssl_error.logに記録されます。
これは、Apache独自のLogLevelディレクティブによっても発生する可能性があります。これは、設定が高すぎるとPHPのロギングをオーバーライドします。ただし、ページでエラーを出力するPHPの機能(display_error)を無効にすることはなく、CLI PHPにも影響しません。その特定の症状があるかどうかを調べる価値があります。
適切なサーバーのログパスを確認すると助けになりました... facepalm
どのPHPスクリプトにアクセスしているか、およびアクセスするためにApacheがどのように構成されているかを確認してください。
一部の構成(仮想ホスト、特定のディレクトリなど)では、error_logファイルをデフォルトとは異なるパス/名前に設定できます。
次に、Apache構成ファイルを確認することをお勧めします。