Ответ 1
Когда PHP работает как модуль Apache, вы можете получить доступ/изменить любой параметр конфигурации, доступный в php.ini
, с помощью директив в файлах конфигурации Apache. Эти директивы...
-
php_value
-
php_flag
-
php_admin_value
-
php_admin_flag
Разница между версиями php_*
и php_admin_*
является ключом к этой проблеме. Значения, установленные с помощью php_admin_value
и php_admin_flag
, могут быть установлены только в глобальных конфигурациях Apache и VirtualHost; они не переопределяются .htaccess или ini.set().
Функция error_reporting()
эквивалентна вызову ini_set()
и подпадает под одни и те же правила.
Итак, я вошел в конфигурацию virtualhost для рассматриваемого сайта и добавил следующие строки...
php_admin_value error_reporting 22527
php_admin_value error_log /custom/log/path/php_errors.log
php_admin_flag log_errors On
php_admin_flag display_errors Off
-
Первая строка - это побитовое значение для
error_reporting = E_ALL & ~E_DEPRECATED
. Я получил это значение, создав простой script:ini_set("error_reporting", E_ALL & ~E_DEPRECATED); echo ini_get("error_reporting");
Если вы хотите игнорировать системные уведомления вместе с предупреждениями об отставке -
error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
- побитовое значение22519
. -
Вторая строка отправляет все ошибки PHP в пользовательский журнал. По умолчанию PHP будет использовать значение
syslog
, обычно/var/log/apache2/error.log
или что-то подобное. -
Третья строка включает ведение журнала файлов.
-
Последний отключает отображение ошибок на странице.
Опять же, здесь приоритет и порядок операций. Эти значения заменяют те, которые определены в php.ini
, и в то же время не могут быть переопределены другими изменениями в приложении или в файлах .htaccess
.
Более подробную информацию об изменении значений конфигурации за пределами php.ini можно найти в документации по PHP.