当我已经有php.ini指令来完成这项工作,而这些指令似乎被忽略时,如何让apache将php错误写入apache错误日志?

当我已经有php.ini指令来完成这项工作,而这些指令似乎被忽略时,如何让apache将php错误写入apache错误日志?,php,apache,logging,configuration,Php,Apache,Logging,Configuration,我有这样的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/w

我有这样的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_errors设置为Off。但是现在,我没有看到错误,尽管我的php.ini配置中有这样做的指令,但它不会被记录在任何地方

问题:

如何在日志中看到错误最好是apache的error.log,而不是在浏览器中。我对为什么不这样做感到困惑,因为我的php.ini指令似乎是通过log_errors和error_log指令请求php这样做的

虚拟主机配置

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

如何配置php来完成您想要的任务? 对于这种特定情况,您不需要编辑apache配置的任何内容,但需要编辑php.ini的配置

仅更改apache指令以执行所需操作 apache配置中的错误在于指定了错误的路径

您需要指定绝对路径,例如/var/log/php/error.log
或者您可以基于文档根指定路径,如%{document_root}/log/error.log

请向我们展示Apache中的虚拟主机配置、.htaccess和php配置以及文件中的php设置。因为例如,与虚拟主机设置相比,.htaccess具有优先级,等等。有很多可能。Max,我已经添加了虚拟主机配置。和htaccess,但我修复了文件夹的完整路径错误,并使用+wx使文件夹可访问。我要问下一个问题——为什么有些错误会进入apache日志,为什么有些错误会进入php.ini指定的日志
<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>
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]
// 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