我已经解决了这个问题,并将其清理干净,以便您能够更轻松地帮助我。
我有一个非常简单的代码:
<?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
我在Amazon AMI上使用64位AWS EC2运行Apache / PHP / MySQL。我不熟悉服务器配置。当我转换到亚马逊服务器时,错误开始了。除了错误报告,服务器和Apache / PHP运行完美。
请指导我如何解决问题。
谢谢!
答案 0 :(得分:15)
这是一个通知。
error_reporting(E_ALL);
揭示它。
<?php
error_reporting(E_ALL); ini_set('display_errors', '1');
echo "Hello world";
owieufpowiejf
?>
Hello world
注意:使用未定义的常量owieufpowiejf - 假设第5行/ code / 14B4LY中的'owieufpowiejf'
那是因为它不是解析错误,它认为它是一个常量并试图将其解析为字符串。放置普通字符串是一个有效的陈述。
答案 1 :(得分:3)
您可以尝试error_reporting(-1)
-1是error_reporting
可以采用的最大值,并且始终是。
答案 2 :(得分:2)
在PHP脚本中尝试将error_reporting设置为E_ALL并查看是否收到通知..
error_reporting(E_ALL)
查看文档:{{3}}
答案 3 :(得分:2)
在主目录中创建.htaccess文件并放置:
php_flag display_errors on
# 7 stands for E_ERROR | E_WARNING | E_PARSE
php_value error_reporting 7
error_reporting
常量的确切值可以在官方文档中找到http://php.net/manual/en/errorfunc.constants.php
当然,您应该在服务器中启用mod_rewrite。
答案 4 :(得分:2)
我遇到了这个问题并通过编辑/etc/php.ini来修复它以显示display_errors = On
答案 5 :(得分:1)
在包含语法错误的同一脚本中调用error_reporting()
永远不会起作用。
<?php
echo "Hello world";
piwejfoiwjefoijwef
?>
此脚本特别不会出现任何语法错误,因为它不包含任何语法错误。它只是一个echo
语句和第二行中的一个常量。在?>
如果没有关闭,你会收到通知。同样,您未在其他测试中启用E_NOTICE
。