【发布时间】:2014-04-21 18:37:55
【问题描述】:
我的 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";
?>
第二条消息没有显示,就像没有php错误输出一样,无论是在http请求中还是在服务器的错误日志中。 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 错误输出。
【问题讨论】:
-
错误日志怎么样?为什么要压制
E_NOTICE? -
我已经更新了我的测试场景和我的帖子,
E_NOTICE不是问题所在。此外,给定的代码示例应该以真正的错误结束,没有通知。错误日志总是空的,不知道为什么,在我的本地实例上它可以工作.. -
你确定你正在运行这个特定的脚本吗?如果全部换成
<?php echo 'foo';,你会观察到相应的变化吗? -
是的,我确信我编辑了正确的脚本。这里我有一个例子:test.foxylion.de 显示所有文件(包括配置和日志文件)。
-
您在
phpinfo()的输出中看到实际的“E_ALL”字符串了吗?你到底是怎么设置这个值的?
标签: php apache error-handling