Назад | Перейти на главную страницу

Изменить отчет об ошибках php, чтобы скрыть предупреждения только для определенного сайта [Debian | Ubuntu]

Представьте себе пару sites-enabled Доступна с /etc/apache2/sites-available. (Так работают только дистрибутивы на основе Debian.)

Можно ли отключить звук warning сообщения из скриптов php от конкретный сайт, не касаясь фактического htdocs?

Обычно есть несколько решений, позволяющих добиться чего-либо:

  1. Добавить error_reporting() директива например error_reporting(E_ERROR); исполняемым скриптам.
  2. Установите php_flags в .htaccess такие файлы: php_flag display_errors off
  3. Использовать ini_set внутри скриптов:

    ini_set('display_errors', 'Off');
    ini_set('display_startup_errors', 'Off');
    error_reporting(0);
    
  4. Подготовить @ функциям, которые выдают предупреждения или ошибки.

  5. + Изменить php.ini на самом деле сказать
    error_reporting = E_ALL ^ E_WARNING
    display_errors = 1

Однако все это означает касание htdocs или глобальное применение изменений. Представьте себе htdocs монтируются только для чтения. Как подавить предупреждения (или уведомления) только для определенных сайтов?

Я предполагаю, что Debian / Ubuntu имеет a2ensite определенные конфигурации по какой-то причине, и я надеюсь, что смогу их изменить. Eсть log_level в примере конфигурации site available, но она обрабатывает количество регистрируемых сообщений. Не сообщения, выводимые скриптами php.

Ручное добавление разделов в php.ini или apache2.conf или httpd.conf тоже будет работать. Если это возможно.

Смотрите также:

Если у вас есть доступ к конфигурациям apache vhost, конечно, вы также можете использовать директивы php_flag внутри виртуального хоста в каталоге sites-available. Таким образом, они применяются только к этому vhost.

Добавьте что-то вроде этого внутри своего виртуального хоста:

<IfModule mod_php5.c>
    php_admin_flag display_errors off
</IfModule>

РЕДАКТИРОВАТЬ:

Если вы хотите, чтобы отображались только фактические ошибки, вы можете использовать директиву php error_reporting с целочисленным значением, описывающим типы уровней ошибок, которые вы хотите отобразить:

<IfModule mod_php5.c>
    php_admin_flag display_errors on
    php_admin_value error_reporting 22517
</IfModule>

Это эквивалентно настройке

error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED;

в php.ini. Более возможные значения, например, здесь:

https://web.archive.org/web/20131009000719/http://www.websitefactors.co.uk/php/2013/01/php-error-reporting-settings

Калькулятор значения сообщения об ошибке:

http://www.bx.com.au/tools/ultimate-php-error-reporting-wizard

Я добавил :

<IfModule mod_php5.c>
 php_admin_flag display_errors on
 php_admin_value error_reporting 30711
</IfModule>

в / etc / apache2 / sites-enabled / work, и все работает нормально.

Да, я знаю, что должен исправить эти уведомления, но я работаю над старым скриптом, и мне нужно будет вернуться к нему, поскольку теперь это решило мою проблему, и это было то, что искал оператор. Надеюсь, это кому-то поможет.

Невозможно сделать это без .htaccess или глобального применения конфигурации. Apache не может «видеть» файлы вне своей корневой папки (htdocs), а файлы .htaccess работают только в папке сайта. php_flag также не работает вне .htaccess.

Таким образом, невозможно обойтись без некоторые модификации или файла .htaccess.