Представьте себе пару sites-enabled
Доступна с /etc/apache2/sites-available
. (Так работают только дистрибутивы на основе Debian.)
Можно ли отключить звук warning
сообщения из скриптов php от конкретный сайт, не касаясь фактического htdocs
?
Обычно есть несколько решений, позволяющих добиться чего-либо:
error_reporting()
директива например error_reporting(E_ERROR);
исполняемым скриптам..htaccess
такие файлы: php_flag display_errors off
Использовать ini_set
внутри скриптов:
ini_set('display_errors', 'Off');
ini_set('display_startup_errors', 'Off');
error_reporting(0);
Подготовить @
функциям, которые выдают предупреждения или ошибки.
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. Более возможные значения, например, здесь:
Калькулятор значения сообщения об ошибке:
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.