【问题标题】:Not displaying PHP errors [duplicate]不显示 PHP 错误 [重复]
【发布时间】:2011-12-01 19:15:24
【问题描述】:

我已将问题归结为干净,希望您能更轻松地帮助我。

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

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

请指导我如何解决问题。

谢谢!

【问题讨论】:

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

标签: php apache apache2 error-reporting


【解决方案1】:

这是一个通知。

error_reporting(E_ALL);

揭示它。

我使用的代码:

<?php

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

?>

输出:

世界你好

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

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

【讨论】:

  • 谢谢,ini_set('display_errors', '1'); 工作!
  • 这对我不起作用。不得不编辑 php.ini。
  • @TomKincaid:视情况而定,一些共享主机禁用了ini_set
【解决方案2】:

你可以试试error_reporting(-1)

-1 是error_reporting 可以取的最大值,并且永远都是。

【讨论】:

  • 天哪。而已。他们将其更改为“通知”。可能在 PHP 的一些更新中。谢谢!
【解决方案3】:

在您的 PHP 脚本中尝试将 error_reporting 设置为 E_ALL 并查看您是否收到通知..

error_reporting(E_ALL)

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

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

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

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

        【讨论】:

        • 最后添加 ?&gt; 解决了我的问题,并且出现了错误.. 谢谢
        猜你喜欢
        • 2014-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-26
        • 1970-01-01
        • 2021-12-23
        • 2013-10-30
        • 2013-06-06
        相关资源
        最近更新 更多