首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我已经有了似乎被忽略的php.ini指令,那么我如何将apache错误写入apache日志呢?

问如果我已经有了似乎被忽略的php.ini指令,那么我如何将apache错误写入apache日志呢?
EN

Stack Overflow用户
提问于 2020-05-13 22:42:13
回答 1查看 167关注 0票数 0

我有如下Apache指令:

代码语言:javascript
复制
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = On
log_errors = On
log_errors_max_len = 10240
error_log = php_errors.log

我在我的一个页面上得到了这个错误--这个错误显示在浏览器中。

代码语言:javascript
复制
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指令似乎要求php通过log_errors和error_log指令来完成这个任务。

虚拟主机Config

代码语言:javascript
复制
<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

代码语言:javascript
复制
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]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-13 23:13:02

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

如何配置php来做您想做的事情?

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

代码语言:javascript
复制
// 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配置的错误之处在于您指定了一个不正确的路径。

您需要指定绝对路径E.G /var/log/php/error.log,也可以根据文档根指定路径(如%{DOCUMENT_ROOT}/log/error.log )

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61786151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档