Я не хочу, чтобы ошибки PHP
отображались / html, но я хочу, чтобы они отображались в /html/beta/usercomponent
. Все настроено так, что ошибки вообще не отображаются. Как я могу получить ошибки, чтобы просто отображаться в одной папке (и ее подпапках)?
В .htaccess
:
php_value error_reporting 2147483647
Это число, согласно документации, должно включать ошибки «все» независимо от версии, если вы хотите более подробный параметр, вручную или значения вместе или запускать
php -r 'echo E_ALL | E_STRICT ;'
чтобы php вычислил значение для вас.
Тебе нужно
AllowOverride All
в конфигурации apaches для включения файлов .htaccess.
Подробнее Чтение этого можно найти здесь:
Примечание. Если вы используете 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, это будет делать трюк.