Как включить отображение ошибок PHP только в подпапке

Я не хочу, чтобы ошибки PHP отображались / html, но я хочу, чтобы они отображались в /html/beta/usercomponent . Все настроено так, что ошибки вообще не отображаются. Как я могу получить ошибки, чтобы просто отображаться в одной папке (и ее подпапках)?

В .htaccess :

 php_value error_reporting 2147483647 

Это число, согласно документации, должно включать ошибки «все» независимо от версии, если вы хотите более подробный параметр, вручную или значения вместе или запускать

 php -r 'echo E_ALL | E_STRICT ;' 

чтобы php вычислил значение для вас.

Тебе нужно

 AllowOverride All 

в конфигурации apaches для включения файлов .htaccess.

Подробнее Чтение этого можно найти здесь:

  • Php / Error Reporting Flag
  • Значения Php / Error Reporting
  • Php / Различные способы настройки настроек

Примечание. Если вы используете Php-CGI вместо mod_php, это может работать не так, как было объявлено, и все, что вы получите, является внутренней ошибкой сервера, и вы останетесь без особого выбора, кроме того, чтобы включить его либо на уровне сайта, сценарий с

 error_reporting( E_ALL | E_STRICT ); 

или аналогичные конструкции до возникновения ошибки.

Мой совет – отключить отображение ошибок пользователю и использовать функцию error_log с большой степенью вероятности.

 display_errors = 0 error_logging = E_ALL | E_STRICT error_log = /var/log/php 

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


@Роджер

Да, вы можете использовать его в < Directory> < Directory> < Directory> construct в конфигурации apaches тоже, однако .htaccess в этом случае эквивалентен и делает его более переносимым, особенно если у вас несколько копий рабочей копии одной и той же базы кода, и вы хотите распространить это изменение на все из них.

Если у вас несколько виртуальных хостов, вам понадобится конструкция в соответствующем определении виртуальных хостов, иначе да

  <Directory /path/to/wherever/on/filesystem> <IfModule mod_php5.c> php_value error_reporting 214748364 </IfModule> </Directory> 

Дополнительные команды «ifmodule» – это просто защитная сетка, поэтому вышеуказанная проблема с умиранием apache, если у вас нет mod_php, не будет.

Самый простой способ – контролировать отчет об ошибках из файла .htaccess. Но предполагается, что вы используете Apache, и скрипты из / html / beta / usercomponent вызывают из этого каталога и не включаются из других источников.

.htacess

 php_value error_reporting [int] 

Вам нужно будет составить целочисленное значение из списка, как описано в документации error_reporting , поскольку константы, такие как E_ERROR, не определены, когда Apache интерпретирует .htaccess.

Это простой побитовый флаг, поэтому значение 12, например, будет E_WARNING + E_PARSE + E_NOTICE.

вы можете сделать это, используя переменную среды. таким образом, у вас может быть больше вариантов, чем просто включение / отключение отчетов об ошибках для специального каталога. в вашем коде, где бы вы ни захотели изменить какое-либо поведение для определенного набора режимов или режимов работы, проверьте, установлена ​​ли переменная среды или нет. как это:

 if ($_ENV['MY_PHP_APP_MODE'] == 'devel') { // show errors and debugging info } elseif ($_ENV['MY_PHP_APP_MODE'] == 'production') { // show some cool message to the user so he won't freak out // log the errors and send email to the admin } 

и когда вы запускаете приложение в своей среде разработки, вы можете установить переменную env в файле .htaccess следующим образом:

  setenv MY_PHP_APP_MODE devel 

или когда вы находитесь в производстве evn:

  setenv MY_PHP_APP_MODE production 

тот же метод применяется к вашей ситуации. в каталогах, где вы хотите сделать что-то особенное (включите отчет об ошибках), установите некоторую переменную env и в свой код, проверьте это.

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

edit: получается, что это можно контролировать из файлов .htaccess. Спасибо людям! 🙂

Тем не менее, вы можете использовать функцию error_reporting () http://docs.php.net/manual/en/function.error-reporting.php, чтобы переключить параметр в сценарии по сценарию. Если у вас есть один скрипт, который каждый раз включается в / html / beta / usercomponent, это будет делать трюк.