WP_DEBUGは設定されていませんが、まだ警告が表示されます


13

私が理解しているように、WP_DEBUGが設定されていない場合、警告が表示されることはありません。しかし、一部のサーバーの一部のサイトでは、まだいくつか表示されています。WP_DEBUGが設定されている場合に表示されるすべての警告ではなく、いくつかの警告を選択します。

私はphp.iniのエラーレベルを変更しようとしましたが、それは警告が表示されるかどうかには影響しないようですが、異なるサーバーで異なる量で表示されます(つまり、開発上の警告なし、ステージング上の警告、本番環境でさらにいくつかの警告)。


これらは間違いなく警告ですか、致命的なエラーですか?
TheDeadMedic

私はまったく同じ問題を抱えていました。私の場合、GravityFormsからの警告でした-警告:「継続」ターゲティングスイッチは「ブレーク」と同等です。「continue 2」を使用するつもりでしたか?/plugins/gravityforms/common.php-以下のLogic Diggerの回答は、この最初の試みを修正するためにコピー/貼り付けで機能しました。ありがとうございます。
OGショーン

回答:


7

WP_DEBUGは、PHPエラー出力には影響しません。error_reporting設定に加えて、php.iniファイルでdisplay_errors = 0を設定します。開発ではデフォルトで有効になっています。ただし、実稼働サーバーではオフにする必要があります。


wp-includes / load.phpを言い換えると:if(WP_DEBUG)error_reporting(E_ALL)。しかし、いくつかのプラグインはおそらくそうすべきではないのにerror_reportingとdisplay_errorsをいじっているように見えます。
tomdxw

1
ああ-そうです、私のphp.iniでdisplay_errorsをOnに設定しました。WP_DEBUGがすべてのエラーを処理してくれると思いました。ありがとうございました。
tomdxw

21

交換

define('WP_DEBUG', false);

これとともに:

ini_set('log_errors','On');

ini_set('display_errors','Off');

ini_set('error_reporting', E_ALL );

define('WP_DEBUG', false);

define('WP_DEBUG_LOG', true);

define('WP_DEBUG_DISPLAY', false);

4
回答に説明を追加してください。
fuxia

おそらく画面上のエラーはオフになっていますが、サーバーのエラーログでそれらを確認できます
-user2060451

4

この行がすでにfalseに設定されている可能性もあります。その場合、次のコードが表示されます。

define('WP_DEBUG', false);

いずれの場合も、この行を次のコードに置き換える必要があります。

ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', false);
define('WP_DEBUG_DISPLAY', false);

変更を保存し、wp-config.phpファイルをサーバーにアップロードすることを忘れないでください。


1
これにより、フロントエンドの警告が非表示になりました。WP_DEBUGはすでにfalseに設定されていました。
OGショーン

1

(上)のすべてのエラー警告/通知を無効化/抑制してくださいwp-config.php。とにかく:エラーは悪くありません。彼らはあなたのコードを修正する機会を与えてくれます。


これは、他の人のプラグインがerror_reportingをいじっていたためだと思います。
tomdxw

1

WordPress環境では、ini_setWordPress Coreが提供する定義済みの定数がすでに達成しているため、通常使用する理由はありません。PHPが機能する方法は、CMS(WordPress)内、個々のスクリプト内、さらにはユーザーごとまたはディレクトリごと(Webホストと代理店の多くのフラストレーション)でも、特定の設定をオーバーライドできることです。

WordPressでページ上にエラーが表示されないようにするには、本当に必要な設定は次のとおりです。

define('WP_DEBUG', false);

... WP_DEBUGが無効になっているため、サブオプションは無効になります:

define('WP_DEBUG_DISPLAY', false);
define('WP_DEBUG_LOG', false);

混乱を招くWP_DEBUG_LOGオプションdebug.logはディレクトリ内の作成のみを指し、wp-content他のロギング設定などには影響しないことに注意してください。

繰り返しになりますが、WordPressの設定はデフォルトのPHP設定を上書きする可能性があるため、PHP設定はwp-config.php、他のWPコンポーネントの前にロードされるファイルに適切な設定があるほど重要ではありません。

ただし、本番環境では以下のようなデフォルト設定を実装することをお勧めします。

error_reporting = E_ERROR | E_WARNING | E_PARSE
display_errors = Off
display_startup_errors = Off
log_errors = On
error_log = /var/www/logs/error.log
log_errors_max_len = 1024
ignore_repeated_errors = On
ignore_repeated_source = Off
report_memleaks = On
xmlrpc_errors = 0
html_errors = Off

完全な例については、NginxおよびPHP-FPM用に最適化されたSlickStack php.iniファイルを参照してください。

あるケースでは、研究の時間後、私たちはプラグイン(またはテーマ)を実現し、以前に設定された様々なエラー処理設定をオーバーライドしたphp.iniとしますwp-config.php。これを防ぐ唯一の方法は、PHP設定を「ハッキング」しようとしているWordPressプラグインまたはテーマを削除するか、拡張機能がCMSのデバッグオプションをオーバーライドすることは非常に悪いため、削除するように指示することです。

SlickStackでは、WP管理ダッシュボードにそのような「ハッキング」のリストを表示するMUプラグイン(PHPスクリプト)を使用してそのようなインスタンスを強調表示することにより、およびディレクトリ内のPHPファイルの行ini_setとフラグを「フラグ付け」するBashスクリプトを作成しましたerror_reporting/themes//plugins/

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.