журнал ошибок отправляется не в то место, WP_DEBUG_LOG игнорируется

Вопрос или проблема

Мой лог ошибок WordPress идет в /var/log/php-fpm/www-error.log. Это не то место, где я хочу его видеть. На самом деле, мне потребовалось слишком много времени, чтобы это понять. (Я новичок в WP и PHP).

Я попробовал перенаправить его с помощью следующего в моем wp-config.php

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', '/var/www/html/wordpress/wp-content/wp-errors.log' ); 
error_log("hello from wp-config\n");

но это не дало эффекта. Этот код размещен перед/выше предупреждения “остановите редактирование”. Я пробовал другие местоположения лог-файлов, такие как /tmp, но настройка WP_DEBUG_LOG игнорируется. Я получаю сообщение “hello”, которое я написал – оно просто в неправильном файле.

Я могу успешно записывать в другие местоположения, используя форму error_log(), которая принимает путь, например error_log(‘hello’, 3, ‘/tmp/mylog.log’).

ini_get(‘error_log’) возвращает путь, который используется.

Мой php.ini не указывает местоположение лога.

Это не проблема с разрешениями на файл.

Я размещаю WP 5.5.1 на AWS Linux 2 (как Centos 7) с PHP 7.2.24

Мысли?

Обновление 12 октября:
Я узнал, что php-fpm захватывает вывод, и что php-fpm можно настроить для изменения этого поведения. Мне не удалось получить то, что я хочу, и у меня нет мотивации продолжать эту попытку, но другим с той же проблемой может быть полезно обратить внимание на эти настройки в /etc/php-fpm.d/www.conf

php_flag[display_errors] = ?? 
catch_workers_output = ??
php_admin_value[error_log] = ??

см. также https://stackoverflow.com/questions/8677493/php-fpm-doesnt-write-to-error-log

Пара образованных предположений:

  1. Существует ли настройка в Apache, которая обходит ваш путь в WP_DEBUG_LOG?
  2. Вы проверили логи ошибок Apache на наличие проблем с разрешениями?

Ответ или решение

Ваша проблема с журналом ошибок WordPress и настройкой WP_DEBUG_LOG является не только распространенной, но и подверженной множеству факторов, влияющих на ее решение. Давайте проанализируем вашу ситуацию и предложим возможные пути ее решения.

Анализ проблемы

  1. Путь к журналу ошибок: Как вы указали, ошибки записываются в файл /var/log/php-fpm/www-error.log. Это может быть связано с тем, что PHP-FPM управляет обработкой ошибок и в значительной степени переопределяет настройки PHP и WordPress.

  2. Настройки WordPress: Вы правильно добавили настройки WP_DEBUG и WP_DEBUG_LOG в файл wp-config.php. Однако у WP_DEBUG_LOG могут быть ограничения, если PHP-FPM настроен так, чтобы игнорировать их.

  3. Путь к журналу в php.ini: Вы указали, что ваше php.ini не содержит указаний на место хранения журнала ошибок, что может быть причиной обращения к значению по умолчанию, установленному в конфигурации PHP-FPM.

  4. Доступ к правам: Хотя вы упомянули, что это не проблема с правами доступа, важно убедиться, что процесс PHP-FPM имеет права на запись в указанный вами путь.

Рекомендации по решению

1. Настройка PHP-FPM

Чтобы решить вашу проблему, проверьте и измените параметры в файле /etc/php-fpm.d/www.conf. Вот несколько настроек, на которые стоит обратить внимание:

  • Запись ошибок:

    php_admin_value[error_log] = /var/www/html/wordpress/wp-content/wp-errors.log

    Это укажет PHP-FPM записывать ошибки в указанный файл.

  • Отображение ошибок:

    php_flag[display_errors] = on
  • Ловля вывода ошибок:

    catch_workers_output = yes

Эти настройки помогут перенаправить журналы ошибок в нужный вам файл.

2. Обновите wp-config.php

В вашем wp-config.php добавление настроек должно быть правильным. Обязательно убедитесь, что эти строки находятся непосредственно перед строкой, отмечающей конец файла:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );  // Убедитесь, что это не полный путь, а просто true

Это позволит WordPress обрабатывать ошибки и сохранять их в файл wp-content/debug.log, если другие настройки PHP-FPM корректно настроены.

3. Перезапуск PHP-FPM и Apache

После того как вы внесли изменения в настройки, не забудьте перезапустить службы PHP-FPM и Apache:

sudo systemctl restart php-fpm
sudo systemctl restart httpd  // для Apache

4. Проверка логов Apache

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

Заключение

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

Если у вас остаются вопросы или требуется дополнительная помощь, не стесняйтесь обращаться за поддержкой к более опытным администратором или сообществу WordPress.

Оцените материал
Добавить комментарий

Капча загружается...