Apache PHP错误日志方法不存在';不要将错误写入我的错误日志文件
PHP error_log方法不会将错误写入自定义错误日志文件。它将只写入/var/log/apache2/php_error.log 以下是myApache PHP错误日志方法不存在';不要将错误写入我的错误日志文件,apache,logging,php,Apache,Logging,Php,PHP error_log方法不会将错误写入自定义错误日志文件。它将只写入/var/log/apache2/php_error.log 以下是myphp.ini中的日志设置: error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE display_errors = Off log_errors = On log_errors_max_len = 0 ; also tried with 9999999 error_log = /var
php.ini
中的日志设置:
error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
display_errors = Off
log_errors = On
log_errors_max_len = 0 ; also tried with 9999999
error_log = /var/log/apache2/php_errors.log
PHP将其错误写入常规Apache错误日志(/var/log/apache2/error.log
),而不是我上面指定的日志
我已经尝试过的事情:
/var/log/apache2/php_errors.log
是777权限,并且该文件存在我做错了什么?删除php_errors.log并重新启动apache2,服务器本身将创建一个具有适当权限和所有者的新php_errors.log文件
rm -f /var/log/apache2/php_errors.log
service apache2 restart
ll /var/log/apache2/php_errors.log
您可以尝试这样指定文件名: 我在Ubuntu上使用Apache2.2.22 使用以下PHP命令:
error_log("eric", 3, "/home/el/error.log");
第一个参数是要发送到错误日志的消息。第二个参数3
表示“预期文件名目的地。第三个参数是目的地。”
创建文件/home/el/error.log并将其所有权设置为:
el@apollo:~$ ll error.log
-rwxrwxr-x 1 www-data www-data 7 Dec 13 14:30 error.log
当PHP解释error_log方法时,它会将消息附加到文件中
资料来源:
您可以在VirtualHost站点配置文件中设置站点的错误日志文件,例如:
/etc/apache2/sites enabled/example.com.conf
:
<VirtualHost *:80>
....
ErrorLog ${APACHE_LOG_DIR}/www.example.com-error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/www.example.com-access.log combined
</VirtualHost>
....
ErrorLog${APACHE_LOG_DIR}/www.example.com-error.LOG
日志级别警告
CustomLog${APACHE_LOG_DIR}/www.example.com-access.LOG
在unix系统中,${APACHE_LOG_DIR}
通常是/var/LOG/apache2
错误和访问将保存在
${APACHE\u LOG\u DIR}/www.example.com error.LOG
和${APACHE\u LOG\u DIR}/www.example.com access.LOG
我想回答这个问题,因为这在谷歌上是一个很高的结果,尽管这是一个老问题
我通过为日志目录上的所有用户添加写权限来解决这个问题
在我的例子中,用户“http”需要能够写入/var/log/httpd/所以我运行了
# chmod a+w /var/log/httpd
如果该文件已经存在,那么首先删除它并允许Apache创建它可能会有所帮助
我的php.ini文件也包含了整个路径
error_log = /var/log/httpd/php_errors.log
今天我花了几个小时试图弄清楚为什么这不起作用,并试图调试代码,因为我可以将任何内容记录到php错误日志中。不用说,在日志工作开始之前,我一直在以蜗牛般的速度进行 我猜90%以上的时间都是权限问题。在我的情况下,daemon是日志文件的所有者和组,我必须
sudo su
到root,然后更改日志文件的权限。我更改为:
chmod 777 myphperor.log
感谢上帝,stackoverflow.com请确保Apache用户至少对日志文件路径中的任何父文件夹具有执行权限。没有它,Apache无法列出文件夹中的任何内容,因此无法查看日志文件
ls
drwxr-x--- root adm folder
chmod o+x folder
ls
drwxr-x--x root adm folder
那一个真的抓住你了!;-)
之后,还要检查Apache用户是否具有对实际日志文件的读写权限。我遇到了这个问题,然后我为Apache日志文件夹授予了正确的权限,然后使用以下命令重新启动了Apache:
sudo chmod a+w /var/log/apache2/
sudo service apache2 restart
您是否尝试将文件名更改为其他文件?或者尝试其他文件夹?检查加载的php.ini文件(查看phpinfo()函数的输出)感谢Olli,我将其更改为/usr/php_errors.log,现在它可以工作了!很可能,您指定的日志文件或其中包含的文件夹的权限没有正确设置以允许php访问该文件。我没有看到php代码,但有两种可能:1.该设备已满。2.封闭目录缺少execute位,因此如果PHP检查文件是否存在,则会失败。简单解决方案:[确保您的Web服务器用户可以rwx目录,rw文件]。OP说他们已经检查了权限。您的答案没有添加任何内容。当您的答案为chmod 777时,很有可能不是正确的答案。谢谢。我在IIS服务器上遇到了这个问题。问题是该站点的某个部分需要基本身份验证,这导致该服务无法运行以具有不同权限的不同用户身份运行。