首页 > 解决方案 > 当我已经有似乎被忽略的 php.ini 指令来执行此操作时,如何让 apache 将 php 错误写入 apache 错误日志?

问题描述

我有这样的 Apache 指令:

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = On
log_errors = On
log_errors_max_len = 10240
error_log = php_errors.log

我在我的一个页面上收到此错误 - 错误显示在浏览器中。

Deprecated: Function money_format() is deprecated in /var/www/html/sample.php on line 152

这很好,因为它显示我的代码中有错误。但令我惊讶的是,当我在 Apache 配置中明确要求不显示不推荐使用的错误(~E_DEPRECATED)时,它显示了不推荐使用的错误。

但是,不管......因为它是生产环境,我需要看到错误,而不是在浏览器中看到它。所以我设置display_errorsOff. 但是现在,我没有看到错误,尽管我的 php.ini 配置有这样做的指令,但它没有记录在任何地方。

问题

如何在日志中看到错误(最好是 apache 的 error.log 最好),但在浏览器中看不到。我很困惑为什么它没有以这种方式发生,因为我的 php.ini 指令似乎要求 php 通过log_errorsanderror_log指令执行此操作

虚拟主机配置

<VirtualHost *:80>
    ServerName apps.domain.com
    ServerAdmin admin@domain.com
    DocumentRoot /var/www/html
   <Directory /var/www/html>
       AllowOverride All
       Require all granted
   </Directory>
    Redirect permanent "/" "https://apps.domain.com/"
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =apps.domain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
</VirtualHost>

.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]

标签: phpapacheloggingconfiguration

解决方案


日志目录需要存在并且可由 apache 访问(在 linux 上,这可以通过 完成sudo chown www-data:www-data /var/log/php

如何配置php来做你想做的事?

对于这种特定情况,您不需要为 apache 配置编辑任何内容,但您确实需要为php.ini

// add this your php.ini file
display_errors = Off
error_log = /var/log/php/error.log # Assuming you have /var/log/php directory and it's writable by httpd
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

只改变你的 apache 指令来做你想做的事

您的 apache 配置中出现的问题是您指定的路径不正确。

您需要指定绝对路径 EG /var/log/php/error.log ,或者您可以根据文档根目录指定路径,例如%{DOCUMENT_ROOT}/log/error.log


推荐阅读