我不希望显示/ {html PHP
错误,但我希望它们显示在/html/beta/usercomponent
中。一切都已设置,以便根本不显示错误。如何才能将错误显示在该文件夹(及其子文件夹)中?
答案 0 :(得分:28)
在.htaccess
:
php_value error_reporting 2147483647
根据文档,此号码应启用“所有”错误,不论版本如何,如果您想要更精细的设置,手动或将值一起运行,或运行
php -r 'echo E_ALL | E_STRICT ;'
让php为你计算价值。
你需要
AllowOverride All
在apach主配置中启用.htaccess文件。
更多关于此的阅读可以在这里找到:
注意如果您使用的是Php-CGI而不是mod_php,这可能不会像宣传的那样有效,而您将获得的只是一个内部服务器错误,并且您将获得除了使用
在每个脚本的基础上在站点范围内启用它error_reporting( E_ALL | E_STRICT );
发生错误之前的或类似结构。
我的建议是禁用向用户显示错误,并充分利用php的error_log功能。
display_errors = 0
error_logging = E_ALL | E_STRICT
error_log = /var/log/php
如果你有这个太吵的问题,这不是你需要选择性地关闭错误报告的标志,这是一个有人应该修复代码的标志。
@Roger
是的,您也可以在apaches配置中的<
构造中使用它,但是,在这种情况下.htaccess是等效的,并且使其更具可移植性,特别是如果您有相同代码库的多个工作签出副本并且您希望将此更改分发给所有这些更改。Directory>
如果您有多个虚拟主机,则需要在相应的虚拟主机定义中使用该构造,否则,是
附加的“ifmodule”命令只是一个安全网,因此如果你没有mod_php,apache死亡的上述问题将不会发生。
答案 1 :(得分:4)
最简单的方法是从.htaccess文件控制错误报告。但是这假设您正在使用Apache,并且/ html / beta / usercomponent中的脚本是从该目录调用的,而不是从其他地方包含的。
.htacess
php_value error_reporting [int]
您必须自己从error_reporting文档中描述的列表中自行组成整数值,因为当Apache解释.htaccess时,没有定义像E_ERROR这样的常量。
这是一个简单的按位标志,例如,值为12,将为E_WARNING + E_PARSE + E_NOTICE。
答案 2 :(得分:4)
您可以使用Environment变量来完成此操作。通过这种方式,您可以获得更多选择,而不仅仅是为特殊目录打开/关闭错误报告。在您的代码中,您想要更改特定的一组directoris或运行模式的任何行为,检查是否设置了环境变量。像这样:
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
}
当您在开发环境中运行应用程序时,可以在.htaccess文件中设置一个env变量,如下所示:
setenv MY_PHP_APP_MODE devel
或当你在生产时evn:
setenv MY_PHP_APP_MODE production
同样的技术适用于您的情况。在你想要做一些特别的事情的目录中(打开错误报告)设置一些env变量并在你的代码中检查它。
答案 3 :(得分:0)
我不相信这个有一个简单的答案,但我当然希望被证明是错误的。
编辑:结果可以从.htaccess文件控制。谢谢大家! :)
但是,您可以使用error_reporting()http://docs.php.net/manual/en/function.error-reporting.php按脚本切换脚本设置。如果碰巧每次都在/ html / beta / usercomponent中都包含一个脚本,那么这就行了。