私は同じサーバーの2つの異なるインスタンス(1つは開発用、もう1つはデプロイメント用)を持ちますが、基本的には同じです(同じOS、同じWordPressバージョン、同じコンテンツなど)。
ただし、設定については混乱しています。同じ設定になっているように見えます(ただし、デプロイメントサーバーはブラウザにエラーや警告を書き込まないように指示されます)。
どちらの設定もini_set( 'error_log', '/var/log/wp-debug.log' );
を指定しており、そのファイルは実際に両方によって作成されます。しかし、あるサーバーではerror_log(...)
を使って書かれたものは/var/log/wp-debug.log
に送られますが、他のサーバーではそのような出力は代わりに/var/log/Apache2/error.log
に送られます(ただしPHPエラーと警告は/var/log/wp-debug.log
に送られます)。
WP_DEBUG
、WP_DEBUG_LOG
、およびWP_DEBUG_DISPLAY
の定義済みの値を使って試してみました。また、ini_set(...)
を介してdisplay_errors
に設定されている値を変更しましたが、何も違いがないようです。
error_log(...)
呼び出しの出力をこれらのログのいずれかに出力するように指定することはできますか? (私はその追加情報を使いたいので、出力は常にApacheのerror.log
に行きたいのです。)
このページの他の場所で説明したように、私の場合の解決策は単にPHPのerror_log
設定の値をリセットすることでした。私は/var/www/html/wp-config.php
の最後に追加することでこれを行いました:
ini_restore('error_log');
重要な点の1つ:これは、さまざまなdefine('WP_DEBUG...', ...);
行の直後に含めても効果がないように見えるので、最後にこれを入れることにしました。
Rarst および bynicolas の助言に感謝します。これが私をこの解決策に導いたのです。
WP側で行われる唯一の処理は、WP_CONTENT_DIR . '/debug.log'
が有効な場合にlogをWP_DEBUG_LOG
に設定することです(公共の場所として本番環境では非常に悪い考えです)。私が正しく覚えているならば、この定数のごく初期の実装がパスをカスタマイズすることを可能にしました、しかしそれはもはやそうではありません。
私の経験ではwp-config.php
のini_set( 'log_errors', 1 ); ini_set( 'error_log', '/path' )
で十分なはずです(WP_DEBUG_LOG
を有効にしない場合はそれを上書きします)。
あなたの2番目のケースは奇妙に聞こえます。私はエラーがある目的地か別の目的地に行くことを期待しますが、2つの別々のログファイルにはしません。それは何か 変更 実行時の設定です。トラブルシューティングに手を加えずに言うことは不可能です。