2015-05-07 33 views
1

我找不到从cgi脚本显示“找不到文件”的日志文件。在GNU/Linux上显示CGI错误的日志文件

我知道它可能在/ var/log下,但是全局查找什么也没有产生,可能这个文件只能由root读取?

$ uname -a 
Linux boxXXX.bluehost.com 3.12.35.1418668052 #1 SMP Wed Dec 17 20:04:02 CST 2014 x86_64 x86_64 x86_64 GNU/Linux 
+1

有很多**它取决于... **包裹在你的问题。什么会产生错误? 'apache'等等......你有什么日志工具? ('syslog-ng'或'systemd journal'),你试图找到错误的尝试是什么?它实际上是记录还是只显示在'stderr'上?如果它是'apache',它通常在'/ var/log/httpd/error.log'(或者你的发行版的等价物) –

+0

我说cgi脚本错误 –

+0

我知道,我可以调用一个** cgi脚本**以许多不同的方式。从C程序,从bash,从Apache等。 –

回答

0

日志文件取决于您的配置。例如,使用Apache 2.4的Debian 8.0下,你可以有:

$ ls -l /var/log/apache2/error* 
-rw-r----- 1 root adm 212 mai 7 19:20 error.log 
... 

必须是超级用户或组为ADM读取文件 /var/log/apache2/access.log。

如果你在寻找“字符串找到”文件“/var/log/apache2/error.log”, 你可以做一些这样的:

$ sudo grep "string to find" /var/log/apache2/error.log 
+0

'access.log'不会显示**错误**现在可以吗?是不是有'apache'的另一个单独的日志? –

0

你应该可以看到日志从Web服务器,例如与Apache在Debian上,你应该看看/var/log/apache2/*.log

您可以使用grep递归上的/ var/root身份登录

grep "file not found" -R /var/log/* 
0

由于消息是属特德作为对Apache网络服务器调用的结果,由CGI脚本写入stderrstdout)任何错误都将被记录在阿帕奇Error Log(见:Error Log)读取/ grep /任何错误日志,你必须对日志文件有足够的读取权限。

日志文件可以位于多个位置之一。 (通常在/var/log/httpd/var/log/apache,具体取决于发行版),通常为(linux中的error_log或windows/OS2中的error.log)。两者都受ErrorLog指令httpd.conf的控制。

如果您有读取日志的权限,您可以简单地使用grep 'file not found' /var/log/httpd/error_log(或您的设置的正确名称)来查找条目。如果没有,您将需要sudosu访问权限以root身份读取该文件,否则您需要大声抱怨系统管理员没有足够的访问权限。如果你已经尝试了上述所有内容,但仍然有困难,请留下评论,我会进一步研究。

您还可以通过mod_cgi或同等服务来定制记录cgi错误的格式。请参阅:CGI Debugging