php 不记录错误 log_errors=on,error_log 路径存在
Posted
技术标签:
【中文标题】php 不记录错误 log_errors=on,error_log 路径存在【英文标题】:php not logging errors log_errors=on, error_log path exists 【发布时间】:2017-08-25 05:41:49 【问题描述】:使用 php5.6(遗留代码库)、apache、ubuntu16。
phpinfo()
说:
log_errors
已开启
error_log
= /var/log/apache2/php_errors.log
display_errors
开启时有输出。
但是/var/log/apache2/
不包含php_errors.log
文件。
已重启 apache (/etc/init.d/apache2 restart
)。
log_errors_max_len
是1024
。
ls -ld /var/log/apache2
drwxr-x--- 2 root adm 4096 Mar 30 18:47 apache2
ls -l /var/log/apache2
-rw-r----- 1 root adm 0 Mar 30 06:25 access.log
-rw-r----- 1 root adm 5967 Mar 30 01:47 access.log.1
-rw-r----- 1 root adm 11618 Mar 31 04:07 error.log
-rw-r----- 1 root adm 11742 Mar 30 06:25 error.log.1
我错过了什么?
【问题讨论】:
Apache2?如果是这样,您的虚拟主机可能会指定 PHP 错误/警告/等的其他日志文件位置。是输出。检查/var/log/apache2/*-error.log
你是对的!有没有我可以添加的指令来分离 php 错误日志?
试试error_log=syslog
,如果它有效,那么它是一个写权限问题
事实上,phpinfo()
应该显示 两个 值(“本地值”和“主值”),只要不同,第一个就是有效的值。您可能还需要将 PHP 作为 Apache 模块运行才能登录到/var/log/apache
。
【参考方案1】:
从上面的 cmets。使用 Apache2 时,每个 VirtualHost 都可以拥有自己的日志文件。
所以/etc/apache2/
目录将有一个sites-available
目录:
├── sites-available
│ ├── 000-default.conf
│ ├── default-ssl.conf
│ ├── default-tls.conf
│ ├── www.domain.com.conf
│ └── www.domain.com-le-ssl.conf
www.
文件可能类似于以下示例。
要设置特定的 php 日志文件,与 Apache 日志分开,请关注this answer:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/domains/example.com/html
ErrorLog /var/www/domains/example.com/apache.error.log
CustomLog /var/www/domains/example.com/apache.access.log common
php_flag log_errors on
php_flag display_errors on
php_value error_reporting 2147483647
php_value error_log /var/www/domains/example.com/php.error.log
</VirtualHost>
【讨论】:
以上是关于php 不记录错误 log_errors=on,error_log 路径存在的主要内容,如果未能解决你的问题,请参考以下文章