Я использую PHP 7 на Ubuntu Xenial и столкнулся со странной ситуацией с WordPress.Я пытался включить WP_DEBUG_LOG
, и он не записывал в файл журнала отладки.
Я написал небольшой тестовый пример и не могу понять, почему это происходит.Я не изменяю конфигурацию по умолчанию для safe_mode
или open_basedir
, что заставило меня поверить, что мой Googling будет виновниками.
Script
<?php
header('Content-Type: text/plain');
define('DEBUG_LOG', '/www/wp-content/debug.log');
echo "PHP Version: " . phpversion() . "\n";
echo "PHP SAPI: " . php_sapi_name() . "\n";
echo "safe_mode: "; var_dump(ini_get('safe_mode'));
echo "open_basedir: "; var_dump(ini_get('open_basedir'));
echo "error_log: "; var_dump(ini_get('error_log'));
echo "Permissions: " . substr(sprintf('%o', fileperms(DEBUG_LOG)), -4) . "\n";
file_put_contents(DEBUG_LOG, "Direct Write\n", FILE_APPEND);
echo "Setting log_errors: "; var_dump(ini_set('log_errors', true));
echo "Setting error_log: "; var_dump(ini_set('error_log', DEBUG_LOG));
error_log('Testing error_log');
die(file_get_contents(DEBUG_LOG));
Вывод
PHP Version: 7.2.5-1+ubuntu16.04.1+deb.sury.org+1
PHP SAPI: fpm-fcgi
safe_mode: bool(false)
open_basedir: string(0) ""
error_log: string(22) "/var/log/php_error.log"
Permissions: 0777
Setting log_errors: string(1) "1"
Setting error_log: bool(false)
Direct Write
Прямая запись с file_put_contents
работает, но error_log
- нет, очевидно, потому что вызов ini_set('error_log')
возвращает false.
Что еще может вызвать это?
Редактировать: Пн 4 июня 16:40:35 CDT 2018
Благодаря комментариям здесь я обнаружил, что использовал php_admin_value
в моей конфигурации PHP-FPM, которая делает настройку неизменной.
Любой тип директивы, установленный с помощью php_admin_value, не может быть переопределен с помощью .htaccess или ini_set ().
http://php.net/manual/en/configuration.changes.php