ОТЛАДКА WP не установлена, но я все еще получаю предупреждения
Если WP_DEBUG не установлен, как я понимаю, вы никогда не должны видеть предупреждений. Но на некоторых сайтах на некоторых серверах я все еще вижу несколько. Не все предупреждения, которые отображались бы, если бы был установлен параметр WP_DEBUG, но несколько избранных.
Я пытался изменить уровень ошибок в php.ini, но это, похоже, не влияет на то, появляются предупреждения или нет, но они появляются в разных количествах на разных серверах (т.Е. Нет предупреждений о разработке, одно предупреждение о постановке, и еще несколько предупреждений о производстве).
5 answers
WP_DEBUG не влияет на вывод ошибок PHP. В дополнение к параметру error_reporting установите значение display_errors=0 в вашем файле php.ini. Он включен по умолчанию для разработки. Но вы захотите отключить его на производственных серверах.
Заменить
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);
Также возможно, что для этой строки уже установлено значение 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 файл возвращается на сервер.
Для сред WordPress обычно нет причин использовать ini_set
, потому что именно этого уже достигают определенные константы, предоставляемые ядром WordPress. Способ работы PHP заключается в том, что определенные настройки могут быть переопределены в вашей CMS (WordPress), в отдельных сценариях и даже на основе для каждого пользователя или для каждого каталога (к большому разочарованию веб-хостов и агентств).
Чтобы отключить отображение ошибок на странице в 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
Для полного примера обратитесь к нашему файлу php.ini slickstack, оптимизированному для Nginx и PHP-FPM.
В одном случае, после нескольких часов исследований, мы поняли, что плагин (или тема) переопределяет различные настройки обработки ошибок, ранее установленные в php.ini
и wp-config.php
. Единственный способ предотвратить это - удалить плагин WordPress или тему, которая пытается "взломайте" ваши настройки PHP или попросите их удалить их, потому что это очень плохая практика, когда расширения переопределяют параметры отладки вашей CMS.
В SlickStack мы создали скрипт Bash, который "помечает" любые строки ini_set
и error_reporting
из PHP-файлов в каталогах /themes/
и /plugins/
, выделяя такие экземпляры с помощью плагина MU (PHP-скрипт), который отображает список таких "взломов" на панели администратора WP.
Попробуйте отключить/подавить все предупреждения/уведомления об ошибках в вашем wp-config.php
(сверху). В любом случае: в ошибках нет ничего плохого. Они дают вам возможность исправить свой код.