PHP错误未在浏览器中显示[Ubuntu 10.10]

60

我对PHP和整个LAMP技术栈都很陌生,但我已经在我的Ubuntu 10.10系统上成功安装并运行起来了。除了浏览器中的错误报告,似乎一切正常,但我就是无法让它工作(而我不能没有它)。

我阅读了许多文章和其他帖子,这些文章和帖子表明,在文件/etc/php5/apache2/php.ini中应该应用以下值:

  • display_errors = On
  • display_startup_errors = On

我已经重新启动了apache2,甚至重新启动了计算机,但是我仍然无法让它工作。我甚至尝试使用phpinfo()函数,它报告这些设置与我设置的一样,所以我知道它正在使用正确的配置文件,但是还是不行!

欢迎任何帮助。


phpinfo() 函数对这些设置的本地值有何说明?error_reporting 的值是多少?如何检查错误? - Your Common Sense
你是期望出现错误或者有意识地强制让错误发生以便测试吗?如果是这样,你是怎么做的呢?同时,请确认你运行的 PHP 版本号。每次修改 PHP 配置文件后,请确保重新启动 Apache。(不必重启机器。) - bogeymin
可能是PHP不显示任何错误的重复问题。 - ArtOfWarfare
13个回答

60
不要仅启用php.ini文件中第一个出现的display_errors。确保您向下滚动到“真正”的设置并将其从Off更改为On
问题在于,如果您只更改(即取消注释+添加= Ondisplay_errors的第一次出现,那么您的更改将在某个地方的第480行被再次设置为Off而被覆盖。

46

我有同样的问题 - 通过在两个php.ini文件中设置display_errors = On来解决了它。

/etc/php5/apache2/php.ini
/etc/php5/cli/php.ini

然后重新启动 Apache:

sudo /etc/init.d/apache2 restart

希望这能有所帮助。


3
我认为,cli是指在线命令行错误,而apache2 php.ini代表在浏览器中显示的错误。 - madhu131313
2
/etc/php5/apache2/php.ini = 当通过浏览器运行时的PHP设置。 /etc/php5/cli/php.ini = 当通过命令行运行PHP时的PHP设置。 - Coreus
哇!太难懂了。很高兴我找到了它,如果可能的话,我会给它+10分。@JLove 这应该被接受为正确(完整)的答案。 - Paulo Bueno

38
要使其工作,您应该更改php.ini中的以下变量:
; display_errors
; Default Value: On
; Development Value: On
; Production Value: Off

; display_startup_errors
; Default Value: On
; Development Value: On
; Production Value: Off

; error_reporting
; Default Value: E_ALL & ~E_NOTICE
; Development Value: E_ALL | E_STRICT 
; Production Value: E_ALL & ~E_DEPRECATED

; html_errors 
; Default Value: On 
; Development Value: On 
; Production value: Off

; log_errors
; Default Value: On 
; Development Value: On 
; Production Value: On

搜索已定义的文件并设置所需值。然后重新启动您的apache2服务器,一切都将正常工作。祝你好运!


9
我想知道是否所有点赞了这篇文章的人都按照建议更改了php.ini文件,或者他们实际上是将正确的值添加进去了,例如display_errors = On。这些都是关于默认值的评论,所以如果你实际上取消注释了本文中建议的行,你的php.ini文件将会有语法错误。 - Pascal
@Pascal是正确的,那个更改会产生语法错误,并且php.ini中的新更改将不会生效。 - Marcos
10
这个答案是误导性的。请查看下面 dbm 的答案以获取正确的配置信息。 - Chamara Keragala

9

编辑完/etc/php5/apache2/php.ini后,请确保重新启动apache。

您可以通过运行以下命令来完成:

sudo service apache2 restart

5
  1. 首先,您需要找到php.ini文件的路径。
  2. 您将在指定路径/etc/php/7.0/apache2/中找到该文件。如果您更改CLI文件夹或CGI文件夹中的值,它将无法工作。
  3. 进行以下更改:

display_errors = On

  1. 重新启动您的Apache服务器。

/etc/init.d/apache2 restart


4

请按照以下步骤进行操作:

1). Open your php.ini file via sublime through path 
    /etc/php/7.2/apache2/php.ini

2). find display_errors in that file

3). Un-comment these lines of code
      display_errors
      Default Value: On
      Development Value: On
      Production Value: Off

      display_startup_errors
      Default Value: Off
      Development Value: On
      Production Value: Off

      error_reporting
      Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
      Development Value: E_ALL
      Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT

      html_errors
      Default Value: On
      Development Value: On
      Production value: On

4). Save the file and then type the following command in the terminal
     sudo service apache2 restart


your errors are now showing in the browser

4
如果您的本地值覆盖了主值,则无法在php.ini中更改其值。请在 .htaccess 文件或虚拟主机配置文件中查找这些变量。
...

        php_admin_value display_errors On
        php_admin_value error_reporting E_ALL
</VirtualHost>

如果你编辑虚拟主机配置文件,需要重启Apache: $ sudo service apache2 restart 不过修改.htaccess文件不需要重启Apache。

3
不应该有php_admin_value register_globals On这行代码!这是另一种设置。 - Veda
抱歉,没有看到评论。你是对的。正在编辑。 - juanmf

1
这里有很多关于如何找到和修改php.ini文件的答案,通常来说,这是最好的方法:在服务器配置中设置正确的设置。
但在某些情况下,当使用共享主机时,您可能无法修改php.ini文件,或者您可能需要提交支持请求以进行修改,而您没有时间去做这些事情。
如果您突然需要立即在错误的PHP脚本中打开错误报告,而不必寻找、修改配置并重新启动服务器,则可以尝试以下方法:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

从上面的内容看起来很清楚,但如果您想了解更多:


1
使用phpinfo();函数查看您的浏览器上的设置表,并查找

Configuration File (php.ini) Path

并编辑该文件。您的计算机可能有多个php.ini文件,您要编辑正确的文件。

还要检查该文件中的display_errors = Onhtml_errors = Onerror_reporting = E_ALL

重新启动Apache。


0
请查看php.ini中的error_reporting指令。

我已经设置为:error_reporting = E_ALL&〜E_NOTICE,但仍然没有任何反应!! - raven-king

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接