.htaccess — контроль уровня журнала ошибок PHP: htaccess против php.ini против кода и виртуального хоста

У меня есть виртуальный хост на моем локальном сервере WAMP, где я устанавливаю свой файл журнала.

Я хотел изменить свой уровень ошибок в журнале PHP, чтобы только предупреждения и ошибки.

Лучший способ должен быть .htaccess, я попробовал это решение:

Как отключить уведомление и предупреждение в PHP в файле .htaccess?

Не работаю (пробовал и других тоже).

В конце пошёл файл php.ini, однако есть и менее гибкие варианты.

1) Каковы приоритеты данного уровня ошибок инструкции? (php.ini против htaccess против кода)
Я думаю, что порядок?

2) Почему не работает в .htaccess?
Я просто установил его поверх .htaccess, и он не работал.

3

Решение

Моя рекомендация будет использовать httpd переменная окружения.

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

<VirtualHost *:80>
DocumentRoot "/srv/www/foo/public"ServerName foo.com

<Directory /srv/www/foo/public>

# production | development | staging
SetEnv APPLICATION_ENV development
...

И тогда в вашем PHP-коде вы получите к нему доступ, например:

<?php
define('APPLICATION_ENV_LOCAL', 'local');
define('APPLICATION_ENV_DEVELOPMENT', 'development');
define('APPLICATION_ENV_STAGING', 'staging');
define('APPLICATION_ENV_PRODUCTION', 'production');

$app_env = (getenv('APPLICATION_ENV')) ? getenv('APPLICATION_ENV') : false;
if (empty($app_env) || ! in_array($app_env, array(APPLICATION_ENV_LOCAL, APPLICATION_ENV_DEVELOPMENT, APPLICATION_ENV_STAGING, APPLICATION_ENV_PRODUCTION))) {
throw new Exception("APPLICATION ENV IS NOT SPECIFIED OR IS INVALID.");
}

То, что я бы сделал, — это совершенно отдельные файлы типа config / INI, которые я включил в зависимости от среды. Они могут определять поведение сообщений об ошибках, поддерживать различные соединения с базой данных, все остальное зависит от среды приложения.

3

Другие решения

  1. Почему не работает в .htaccess?

Можно ли установить флаги PHP в .htaccess зависит от того, как PHP установлен на вашем сервере. PHP должен быть установлен как модуль Apache.

Однако, начиная с PHP 5.3, файлы конфигурации PHP для каждого каталога поддерживаются в форме .user.ini файлы (обратите внимание на префикс точки). Они принимают ту же форму, что и php.ini файлы, но работают для каждого каталога в пользовательском коде.

Например:

; All errors and warnings only
error_reporting=E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_USER_NOTICE & ~E_USER_DEPRECATED
  1. Каковы приоритеты этого уровня ошибок инструкции? (php.ini против htaccess против кода) Я думаю, что порядок?

Да, тот порядок (.htaccess или же .user.ini). За исключением того, что некоторые настройки могут быть установлены только выше по цепочке, например. в php.ini,

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector