当一个不存在的PHP脚本被请求时,mod_proxy_fcgi提供了一个相当无用的错误信息,基本上只是说
[proxy_fcgi:error] .... AH01071: Got error 'Primary script unknown\n'
这台服务器使用Apache 2.4.6(Centos 7),php处理configuration为:
<FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch>
我真的很想知道实际的脚本名称,因为它可能包含有用的信息(例如,指示有缺陷的链接,页面名称中的错误,或仅仅表明它只是另一个愚蠢的寻找服务器与不受保护的WP – login.PHP)。
我试图从信息更改LogLevel进行debugging,但是然后错误日志也充满了有效的PHP脚本访问细节,这使得错误日志相当混乱,因为这些都不是实际的错误。
有没有办法获得更有用的proxy_fcgi错误消息,其中包括不存在的PHP脚本的实际脚本名称?
您可以定义包含%L的ErrorLogFormat,然后在您的CustomLog格式%L中执行相同的操作
这将使Apachelogging一个特定的ID,将错误日志条目绑定到访问日志条目中,然后你需要做的就是grep。
例:
ErrorLogFormat "[%{u}t] [%-m:%l] [%L] [pid %P:tid %T] %7F: %E: [client\ %a] %M% ,\ referer\ %{Referer}i" LogFormat "%h %l %u [%L] %t \"%r\" %>s \"%{Referer}i\" \"%{User-Agent}i\"" combined
所以下一次,当你看到一个错误,你检查它的ID和grep access.log相同的ID
我会得到logging错误的时间,然后在那个时候search访问日志,查找返回失败的请求。 这应该有助于追踪剧本。