【问题标题】:How to disable apending of "referer" to error_log in PHP?如何在 PHP 中禁用将“referer”附加到 error_log?
【发布时间】:2014-10-27 05:37:41
【问题描述】:

PHP 错误日志通常如下所示:

[Tue Sep 02 15:46:13 2014] [error] [client 192.168.0.105] blah, blah, ... , referer: https://192.168.0.21/blah/blah
[Tue Sep 02 15:46:13 2014] [error] [client 192.168.0.105] blah, blee, ... , referer: https://192.168.0.21/blah/blee

我怎样才能让它们看起来像这样?

[Tue Sep 02 15:46:13 2014] [error] [client 192.168.0.105] blah, blah, ... 
[Tue Sep 02 15:46:13 2014] [error] [client 192.168.0.105] blah, blee, ... 

我尝试了$_SERVER['HTTP_REFERER']='';,但它(不足为奇)没有帮助。

【问题讨论】:

  • 在某些情况下,我们会为日志生成大量诊断信息,并且每一行都不需要知道引用者。
  • 似乎删除比忽略更多的工作 - 是的,我一点帮助都没有;)
  • 这是一个 Apache 日志,对吧?

标签: php http-referer error-log referer


【解决方案1】:

(回答一个老问题,我知道,但我最近不得不自己解决这个问题,所以也许这会对其他人有所帮助......)

这可以通过在您的服务器配置或虚拟主机 .conf 文件中设置 'ErrorLogFormat' directive 来完成。像这样:

ErrorLogFormat "[%t] [%l] [pid %P] %F: %E: [client %a] %M"

或者也许在你的服务器配置中查找默认值并修改它——你只需要去掉%{Referer}i,这是添加引用 URL 的原因。

【讨论】:

  • 我的问题不是如何永久禁用referer(我知道怎么做),而是有条件地将其从PHP中删除,而不是从.conf中删除。
  • 嗯,对不起,我想我没听懂你到底在问什么。您是否需要从 PHP 内部执行此操作(例如,因为您无权访问 .conf)?还是只需要没有引用者的 PHP 错误日志,而其余的都有?
  • 我希望在 PHP 中控制是否将引用者附加到日志中,逐条消息。
  • 我认为这是不可能的。 PHP 无法访问原始引用变量,也无法访问所使用的日志记录格式。我唯一能想象的是以某种方式抛出严重性较低的错误,然后将服务器设置为仅记录严重性较高的消息的引用者。我不确定这是否可能,而且我怀疑这不值得麻烦,tbh。
  • 这对我不起作用。 Syntax error on line 84 of /opt/local/apache2/conf/extra/httpd-ssl-email.conf: Invalid command 'ErrorLogFormat', perhaps misspelled or defined by a module not included in the server configuration
猜你喜欢
  • 1970-01-01
  • 2016-01-24
  • 2011-09-08
  • 2013-06-11
  • 2019-05-08
  • 2015-05-03
  • 2010-11-11
  • 2015-09-17
  • 1970-01-01
相关资源
最近更新 更多