Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

В .htaccess:

php_value error_reporting 2147483647

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

php -r 'echo E_ALL | E_STRICT ;'

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

Вам нужно

AllowOverride All

в главной конфигурации apaches, чтобы включить файлы .htaccess.

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


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

error_reporting( E_ALL | E_STRICT ); 

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

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

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

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


@Roger

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

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

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

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

Ответ 2

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

.htacess

php_value error_reporting [int]

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

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

Ответ 3

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

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 и в свой код, проверьте это.

Ответ 4

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

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

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