提问人:beetree 提问时间:10/6/2011 更新时间:7/21/2018 访问量:37399
不显示 PHP 错误 [duplicate]
Not displaying PHP errors [duplicate]
问:
我已经把问题归结为干净了,希望你能更容易帮助我。
我有一个非常简单的代码:
<?php
echo "Hello world";
?>
这运行得很好。
如果我运行以下代码(解析错误),我不会收到任何错误,但仍显示文本“Hello world”:
<?php
echo "Hello world";
piwejfoiwjefoijwef
?>
但是,如果我将解析错误放在代码之前,则不会显示“Hello world”:
<?php
piwejfoiwjefoijwef
echo "Hello world";
?>
当我打印phpinfo(在同一个文件,同一个目录中)时,我有以下设置: display_errors开启 display_startup_errors error_reporting 1
如果我尝试在脚本中设置错误报告并使用以下代码运行它,我仍然不会收到任何错误或警告,但会显示文本“Hello world”:
<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE); ini_set('display_errors', '1');
echo "Hello world";
owieufpowiejf
?>
我的php.ini文件具有以下值(并且我已经重新启动了Apache):
error_reporting = E_ERROR & ~E_DEPRECATED
display_errors = On
display_startup_errors = On
我正在使用 64 位 AWS EC2 在 Amazon AMI 上运行 Apache / PHP/MySQL。我对服务器配置不是很了解。当我过渡到亚马逊服务器时,错误就开始了。除了错误报告之外,服务器和 Apache/PHP 运行完美无缺。
请指导我能做些什么来解决问题。
谢谢!
答:
这是一个通知。
error_reporting(E_ALL);
揭示了它。
我使用的代码:
<?php
error_reporting(E_ALL); ini_set('display_errors', '1');
echo "Hello world";
owieufpowiejf
?>
输出:
世界您好
注意:使用未定义的常量 owieufpowiejf - 在第 5 行的 /code/14B4LY 中假设为“owieufpowiejf”
这是因为它不是解析错误,它将其视为常量,并试图将其解析为字符串。放置一个普通的字符串是一个有效的语句。
评论
ini_set('display_errors', '1');
ini_set
在你的PHP脚本中,尝试将error_reporting设置为E_ALL,看看你是否收到通知。
error_reporting(E_ALL)
查看文档:http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting
你可以试试error_reporting(-1)
-1 是可以取的最大值,并且始终是。error_reporting
评论
在主目录中创建 .htaccess 文件并放置:
php_flag display_errors on
# 7 stands for E_ERROR | E_WARNING | E_PARSE
php_value error_reporting 7
常量的确切值可以在官方文档中找到 http://php.net/manual/en/errorfunc.constants.phperror_reporting
当然,您应该在服务器中启用mod_rewrite。
在包含语法错误的同一脚本中调用永远不会起作用。error_reporting()
<?php
echo "Hello world";
piwejfoiwjefoijwef
?>
特别是这个脚本不会给你任何语法错误,因为它不包含任何语法错误。它只是一个语句和第二行中的一个基本常量。尾随分号可以省略echo
?>
如果它没有被关闭,你会收到通知。同样,您未在其他测试中启用。E_NOTICE
评论
?>
我遇到了这个问题,并通过将 /etc/php.ini 编辑为 display_errors = On 来修复它
评论
error_log=x
/var/log/apache2/error.log
/var/log/php/error.log