display_errors ON无效(Apache 2.4.7& PHP 5.5.8-2)

时间:2014-03-16 16:21:16

标签: php apache error-handling

我的http服务器(实际上是Apache 2.4.7和PHP 5.5.8-2)在debian上运行时出现问题。 如果没有启用display_errors,服务器将返回500-http错误,但是当使用php.ini或apache vhost指令启用display_errors时,服务器只返回一个空白(或错误之前发生的任何输出)到客户端。我无法以任何方式显示实际发生的php错误。

这里我是来自phpinfo()

的配置部分
error_reporting         0
display_errors          On
display_startup_errors  On
html_errors             On
log_errors              On

这是我尝试测试的实际php文件

<?php
echo "A message before php-error occurs";
foobar1();
echo "A message after error occured";
?>

第二条消息不会显示,就像http请求和服务器的错误日志中都没有php错误输出一样。 HTTP状态代码为200。

HTTP/1.1 200 OK
Date: Sun, 16 Mar 2014 16:18:36 GMT
Server: Apache/2.4.7 (Debian)
Strict-Transport-Security: max-age=604800
X-Powered-By: PHP/5.5.8-2
Content-Length: 33
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html

A message before php-error occurs

如果有人知道问题是什么,那么如果我得到答复就会很棒。在我每次在本地机器上发生错误时都要复制生产平台以获取php错误输出的那一刻。

1 个答案:

答案 0 :(得分:1)

查看您的phpinfo.php error_reporting的值为0,这意味着它没有从您的虚拟主机配置中设置。

根据PHP文档

  

在PHP之外使用PHP常量,就像在httpd.conf中一样,没有用处,所以在这种情况下需要整数值。   并且由于错误级别将随着时间的推移而增加,因此最大值(对于   E_ALL)可能会改变。所以代替E_ALL考虑使用a   更大的值,从现在开始覆盖所有位字段   未来,像2147483647这样的数值(包括所有错误,而不仅仅是   E_ALL)。

在virtualhost.conf中插入E_ALL(32767)的数字常量。

可以在此处找到错误代码常量的完整列表:http://www.php.net/manual/en/errorfunc.constants.php

您也可以尝试插入

error_reporting(E_ALL);

在PHP脚本的顶部,看看是否以这种方式显示错误报告。