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_len1024

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 路径存在的主要内容,如果未能解决你的问题,请参考以下文章

如何开启PHP日志功能?

PHP错误日志笔记

记录php日志

PHP之常见配置

PHP优化笔记

PHP配置文件中与错误相关选项