如何在一个子文件夹上打开PHP错误显示

如何在一个子文件夹上打开PHP错误显示,php,Php,我不希望PHP错误显示/html,但我希望它们显示在/html/beta/usercomponent中。所有设置都是为了不显示错误。我怎样才能让错误仅仅出现在一个文件夹(及其子文件夹)中呢?我不相信有一个简单的答案,但我肯定希望被证明是错误的 编辑:原来这可以通过.htaccess文件控制。谢谢大家!:) 不过,您可以使用error_reporting()逐个脚本切换设置。如果您碰巧有一个脚本,并且每次都包含在/html/beta/usercomponent中,那么就可以了。在.htaccess

我不希望
PHP
错误显示/html,但我希望它们显示在
/html/beta/usercomponent
中。所有设置都是为了不显示错误。我怎样才能让错误仅仅出现在一个文件夹(及其子文件夹)中呢?

我不相信有一个简单的答案,但我肯定希望被证明是错误的

编辑:原来这可以通过.htaccess文件控制。谢谢大家!:)


不过,您可以使用error_reporting()逐个脚本切换设置。如果您碰巧有一个脚本,并且每次都包含在/html/beta/usercomponent中,那么就可以了。

.htaccess
中:

php\u值错误\u报告2147483647
根据文档,此数字应启用“所有”错误,无论版本如何,如果您想要更精细的设置,请手动或将值合并,或运行

php-r'echo E|u ALL | E|u STRICT;'
让php为您计算值

你需要

AllowOverride All
在apaches主配置中启用.htaccess文件

有关这方面的更多信息,请访问:


注意如果您使用的是Php CGI而不是mod_Php,这可能不会像广告中所宣传的那样起作用,您将得到的只是一个内部服务器错误,除了在每个脚本的基础上启用它之外,您将别无选择

错误报告(E|u ALL | E|u STRICT);
或类似的构造在错误发生之前

我的建议是禁用向用户显示错误,并充分利用php的错误日志功能

显示错误=0
错误日志记录=E|u ALL | E|u STRICT
错误\u log=/var/log/php
如果你有太多的问题,这不是一个信号,你需要有选择地关闭错误报告,这是一个信号,有人应该修复代码


@罗杰

是的,您也可以在apaches配置中的
构造中使用它,但是,本例中的.htaccess是等效的,并且使它更易于移植,特别是当您有同一代码库的多个工作签出副本并且希望将此更改分发给所有这些副本时

如果您有多个虚拟主机,则需要在相应的虚拟主机定义中使用构造,否则为“是”


php_值错误_报告214748364

附加的“ifmodule”命令只是一个安全网,因此,如果没有mod_php,则不会出现上述apache死亡问题

最简单的方法是从.htaccess文件控制错误报告。但这是假设您正在使用Apache,/html/beta/usercomponent中的脚本是从该目录调用的,而不是从其他目录中包含的

.htacess

php_value error_reporting [int]
您必须按照文档中的描述自己从列表中合成整数值,因为在Apache解释.htaccess时没有定义诸如E_ERROR之类的常量


这是一个简单的按位标志,因此,例如,值12将是E_WARNING+E_PARSE+E_NOTICE。

您可以通过使用环境变量来实现这一点。这样,您可以有更多的选择,而不仅仅是打开/关闭特殊目录的错误报告。在您的代码中,如果您想要更改一组特定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
}
 setenv MY_PHP_APP_MODE devel
在开发环境中运行应用程序时,可以在.htaccess文件中设置一个env变量,如下所示:

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
}
 setenv MY_PHP_APP_MODE devel
或者在生产evn时:

 setenv MY_PHP_APP_MODE production

同样的技巧也适用于你的情况。在您希望执行特殊操作(打开错误报告)的目录中,设置一些env变量,并在代码中检查该变量。

嘿,对不起,我刚刚习惯了这个系统。如果可能的话,我正在尝试在httpd.conf文件中执行此操作。这看起来像php_value error_reporting 2147483647,还是需要在.htaccess文件中执行?请注意,如果其他人正在寻找如何打开php-CGI错误:您现在(从php 5.3开始)可以使用与htaccess文件工作方式非常类似的per directory.user.ini文件。但是,您没有在上写入
php\u标志display\u errors=on
。这里的更多信息:还要注意,正如该页面的评论所说:“如果您有很长的进程超时,更改可能需要一段时间才能传播到所有进程。”因此请耐心等待。如果其他所有操作都失败,
set_error_handler(“var_dump”)。尽管调用脚本中存在语法错误,但所有内容都需要事先通过php.ini/.htaccess/.user.ini进行配置。