Где я должен указать WordPress, где следует записывать сообщения журнала ошибок?


У меня есть два разных экземпляра одного и того же сервера (один для разработки, один для развертывания), построенные независимо, но в основном одинаковые (та же ОС, та же версия 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, а также изменение значения display_errors через ini_set(...), но, похоже, ничего не меняет.

Могу ли я указать где-нибудь, что я хочу, чтобы выходные данные вызовов error_log(...) отправлялись в один или другой из этих журналов? (Я бы хотел получить результат всегда нужно обращаться к Apache error.log, потому что эту дополнительную информацию я хочу использовать.)

Author: IpsRich, 2016-09-12

2 answers

На стороне WP единственная обработка, которую он выполняет, - это установка для журнала значения WP_CONTENT_DIR . '/debug.log', если включено значение WP_DEBUG_LOG (очень плохая идея в производственной среде как общедоступное местоположение). Если я правильно помню, самые ранние реализации этой константы позволяли настраивать путь, но это уже не так.

По моему опыту ini_set( 'log_errors', 1 ); ini_set( 'error_log', '/path' ) в wp-config.php должно быть достаточно (если вы не включите WP_DEBUG_LOG, который переопределит его).

Ваш второй случай звучит странно. Я бы ожидал, что ошибки будут идти в одном направлении или другой, но не в два отдельных файла журнала. Возможно, что-то изменяет конфигурацию во время выполнения. Это невозможно сказать, не имея возможности устранить неполадки.

 3
Author: Rarst, 2016-09-12 17:48:04

Как описано в другом месте на этой странице, в моем случае решением было просто сбросить значение параметра PHP error_log. Я сделал это, добавив в конец своего /var/www/html/wp-config.php:

ini_restore('error_log');

Один важный момент: я закончил тем, что поставил это прямо в конце, потому что, похоже, это не вступило в силу, когда было включено сразу после различных строк define('WP_DEBUG...', ...);.

Спасибо Рарсту и байниколасу за их советы, которые помогли мне прийти к этому решению.

 0
Author: IpsRich, 2016-09-13 14:03:37