web-dev-qa-db-ja.com

Error_logメッセージをどこに書くべきかWordPressにどこに知らせるべきですか?

私は同じサーバーの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_DEBUGWP_DEBUG_LOG、およびWP_DEBUG_DISPLAYの定義済みの値を使って試してみました。また、ini_set(...)を介してdisplay_errorsに設定されている値を変更しましたが、何も違いがないようです。

error_log(...)呼び出しの出力をこれらのログのいずれかに出力するように指定することはできますか? (私はその追加情報を使いたいので、出力は常にApacheのerror.logに行きたいのです。)

3
Richard Wiseman

このページの他の場所で説明したように、私の場合の解決策は単にPHPのerror_log設定の値をリセットすることでした。私は/var/www/html/wp-config.phpの最後に追加することでこれを行いました:

ini_restore('error_log');

重要な点の1つ:これは、さまざまなdefine('WP_DEBUG...', ...);行の直後に含めても効果がないように見えるので、最後にこれを入れることにしました。

Rarst および bynicolas の助言に感謝します。これが私をこの解決策に導いたのです。

0
Richard Wiseman

WP側で行われる唯一の処理は、WP_CONTENT_DIR . '/debug.log'が有効な場合にlogをWP_DEBUG_LOGに設定することです(公共の場所として本番環境では非常に悪い考えです)。私が正しく覚えているならば、この定数のごく初期の実装がパスをカスタマイズすることを可能にしました、しかしそれはもはやそうではありません。

私の経験ではwp-config.phpini_set( 'log_errors', 1 ); ini_set( 'error_log', '/path' )で十分なはずです(WP_DEBUG_LOGを有効にしない場合はそれを上書きします)。

あなたの2番目のケースは奇妙に聞こえます。私はエラーがある目的地か別の目的地に行くことを期待しますが、2つの別々のログファイルにはしません。それは何か 変更 実行時の設定です。トラブルシューティングに手を加えずに言うことは不可能です。

3
Rarst