错误在PHP不logging或显示

写入日志文件时,屏幕上无法显示任何错误。 当检查phpinfo()打印出来我有一个本地的主值相同

display_errors On display_startup_errors On error_log /var/log/php.log error_reporting E_ALL & ~E_NOTICE log_errors On log_errors_max_len 

ls -l /var/log/php.log是-rw-rw-rw- 1根root 0 Jun 21 07:47 /var/log/php.log用于/ var和/ varlog drwxrwxrwx 23根root 4096 Jun 2 11 :13 var

当代码出现错误时,浏览器什么都不显示,浏览器说没有页面的源代码。 任何其他地方的任何build议,看看或更改为出现在某处的错误(任何地方都是好的)

编辑:我的错误脚本是现在

 <?php ini_set('display_errors', 1); error_reporting(E_ALL); echo "print from error.php 2 "; error //print from erroerror to cuase logging to happen. ?> 

这将显示并logging

 Notice: Use of undefined constant error - assumed 'error' in /var/www/piku_dev2/error.php on line 7 

但是如果我在错误行上放置像@ @ $%$这样的垃圾,我也不会在任何地方得到错误消息。

编辑2:问题原来在httpd.conf文件中。 我不知道它到底是什么,因为它是被别人固定的。

我可以看到一些可能的解决scheme来解决您的问题。 这些是您遇到的最常见的问题:

  • 在你的例子中,你使用#@$%$来引发一个错误。 但是,PHP会将以散列开头的任何行作为注释,所以这行不会被评估,因此不会触发错误条件。
  • 有2个不同的php.ini文件,你应该知道; 一个用于Apache,一个用于PHP CLI。 如果您的脚本是从Web浏览器中调用的,请确保您编辑的是Apache的。 这个文件的目录可能会有所不同,但是默认path通常是/etc/php/apache/php.ini
  • 更改php.ini文件后,您必须重新启动Apache,或将SIGHUP发送到Apache以强制重新读取configuration文件。
  • error_reportinglog_errorsconfigurationvariables可以在Apache vhost文件中本地覆盖,甚至可以在PHP脚本本身覆盖。 确保默认的服务器configuration不会在您正在使用的虚拟主机的Apacheconfiguration中本地覆盖这些variables。
  • 您的/var/log/php.log文件的权限需要由Apache写入。 将此文件的所有者设置为系统上的Apache用户通常是安全的(Apache用户通常是www-dataapache )。

以前我在两种情况下没有错误日志:

  1. Apache正在运行的用户没有权限修改php_error_log文件。
  2. 错误500是由于.htaccess的错误configuration而发生的,例如错误的重写模块设置。 在这种情况下,错误会logging到Apache error_log文件中。

看起来像display_errorserror_reporting被别的东西覆盖。

它发生在我身上的一个应用程序,后来在引导程序中改变了error_reporting,我没有看到。

一个好的做法是在应用程序中searcherror_reporting,并看到它在某处被修改。

我的问题是,不仅Apache不能写入日志文件,它也不能写入/ var / log / httpd目录。

我的修复?

php.ini error_log = /var/log/httpd/php-error.log

chmod 777 / var / log chmod 777 / var / log / httpd

顺便说一句,我正在运行CentOS 6。 必须有一个更好的办法比chmod你的日志和httpd文件夹777,但这是我能得到它的唯一办法。 你可以添加Apache到根组,这将是一个坏主意。