在没有php.ini的情况下设置display_errors=0和log_errors=1

在没有php.ini的情况下设置display_errors=0和log_errors=1,php,error-handling,Php,Error Handling,由于我无法控制的原因,我无法在生产服务器的php.ini中设置display_errors=0和log_errors=1。我知道我可以设置错误报告(0)以完全抑制所有错误消息,但这会影响日志错误和显示的错误。我希望在运行时有一个与设置display_errors=0和log_errors=1等效的方法。这可能吗?谢谢。两者都是,所以您可以在运行时使用 ini_set('display_errors', 0); ini_set('log_errors', 1); 请参见尝试以下操作: ini_s

由于我无法控制的原因,我无法在生产服务器的php.ini中设置display_errors=0和log_errors=1。我知道我可以设置
错误报告(0)
以完全抑制所有错误消息,但这会影响日志错误和显示的错误。我希望在运行时有一个与设置display_errors=0和log_errors=1等效的方法。这可能吗?谢谢。

两者都是,所以您可以在运行时使用

ini_set('display_errors', 0);
ini_set('log_errors', 1);
请参见尝试以下操作:

ini_set('display_errors', 0);
ini_set('log_errors', 1);

如果您使用PHP作为模块,并且无法在所需文件夹上使用PHP.ini主指令或重写PHP.ini,并且您不想在PHP文件上启用它,那么您可以尝试使用.htaccess habilities

在包含应用程序的文件夹顶部,放置一个.htaccess文件,其中包含:
php\u标志显示\u错误0

应该只应用于php输出显示,而不是日志

无论如何,提供的关于ini_set()的解决方案将只适用于包含它的页面。
注意:如果您有include,那么在解析它时,display_error值将起作用。但是如果您直接访问它将无法工作。

您可能希望在.htaccess中执行此操作,因此指令在脚本开始解析之前生效。这将使致命错误也看不见。这只能在Apache as模块上完成。这意味着这只需要为该会话设置一次,而不是在每个页面上设置?@keybored否,这意味着它是在执行这两行代码时设置的,然后在脚本处于活动状态时保持活动状态,例如,对于单个请求。与会话无关。