我的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错误输出的那一刻。
答案 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脚本的顶部,看看是否以这种方式显示错误报告。