Вопрос или проблема
Мой лог ошибок 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
Пара образованных предположений:
- Существует ли настройка в Apache, которая обходит ваш путь в
WP_DEBUG_LOG
? - Вы проверили логи ошибок Apache на наличие проблем с разрешениями?
Ответ или решение
Ваша проблема с журналом ошибок WordPress и настройкой WP_DEBUG_LOG
является не только распространенной, но и подверженной множеству факторов, влияющих на ее решение. Давайте проанализируем вашу ситуацию и предложим возможные пути ее решения.
Анализ проблемы
-
Путь к журналу ошибок: Как вы указали, ошибки записываются в файл
/var/log/php-fpm/www-error.log
. Это может быть связано с тем, что PHP-FPM управляет обработкой ошибок и в значительной степени переопределяет настройки PHP и WordPress. -
Настройки WordPress: Вы правильно добавили настройки
WP_DEBUG
иWP_DEBUG_LOG
в файлwp-config.php
. Однако уWP_DEBUG_LOG
могут быть ограничения, если PHP-FPM настроен так, чтобы игнорировать их. -
Путь к журналу в php.ini: Вы указали, что ваше
php.ini
не содержит указаний на место хранения журнала ошибок, что может быть причиной обращения к значению по умолчанию, установленному в конфигурации PHP-FPM. -
Доступ к правам: Хотя вы упомянули, что это не проблема с правами доступа, важно убедиться, что процесс 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.