不显示 PHP 错误 [duplicate]

Not displaying PHP errors [duplicate]

提问人:beetree 提问时间:10/6/2011 更新时间:7/21/2018 访问量:37399

问:

我已经把问题归结为干净了,希望你能更容易帮助我。

我有一个非常简单的代码:

<?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 运行完美无缺。

请指导我能做些什么来解决问题。

谢谢!

php apache apache2 错误报告

评论

1赞 jprofitt 10/6/2011
你试过使用E_ALL吗?此外,如果您在 PHP 配置文件中更改它,您可能需要重新启动 Apache。
0赞 Tom 10/6/2011
您的 php 可能正在记录到文件,而不是正在呈现的页面。检查它是否记录到您的 apache 错误日志或它自己的自定义日志(检查您的php.ini配置)。它可能在 或error_log=x/var/log/apache2/error.log/var/log/php/error.log

答:

23赞 Madara's Ghost 10/6/2011 #1

这是一个通知。

error_reporting(E_ALL);

揭示了它。

我使用的代码:

<?php

    error_reporting(E_ALL); ini_set('display_errors', '1');
    echo "Hello world";
    owieufpowiejf

?>

输出:

世界您好

注意:使用未定义的常量 owieufpowiejf - 在第 5 行的 /code/14B4LY 中假设为“owieufpowiejf”

这是因为它不是解析错误,它将其视为常量,并试图将其解析为字符串。放置一个普通的字符串是一个有效的语句。

评论

2赞 checksum 2/15/2013
谢谢,有效!ini_set('display_errors', '1');
2赞 Tom Kincaid 4/10/2013
这对我不起作用。不得不编辑php.ini。
0赞 Madara's Ghost 4/10/2013
@TomKincaid:视情况而定,某些共享主机禁用 .ini_set
2赞 Jake 10/6/2011 #2

在你的PHP脚本中,尝试将error_reporting设置为E_ALL,看看你是否收到通知。

error_reporting(E_ALL)

查看文档:http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting

3赞 Ole 10/6/2011 #3

你可以试试error_reporting(-1)

-1 是可以取的最大值,并且始终是。error_reporting

评论

0赞 beetree 10/6/2011
哦,我的上帝。就是这样。他们将其更改为“通知”。可能在PHP的某些更新中。谢谢!
2赞 Krasimir 10/6/2011 #4

在主目录中创建 .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。

1赞 mario 10/6/2011 #5

在包含语法错误的同一脚本中调用永远不会起作用。error_reporting()

<?php
echo "Hello world";
piwejfoiwjefoijwef
?>

特别是这个脚本不会给你任何语法错误,因为它不包含任何语法错误。它只是一个语句和第二行中的一个基本常量。尾随分号可以省略echo?>

如果它没有被关闭,你会收到通知。同样,您未在其他测试中启用。E_NOTICE

评论

0赞 Saud Alfadhli 1/31/2015
最后添加解决了我的问题,错误显示..谢谢 <3?>
2赞 Tom Kincaid 4/10/2013 #6

我遇到了这个问题,并通过将 /etc/php.ini 编辑为 display_errors = On 来修复它