我一直在尝试使用Apache服务器中的Perl和CGI为应用程序创建日志文件。因此,脚本需要保留一个日志文件,该文件必须在脚本启动时打开。从我得到的日志:Unable to open the file: Permission denied at /usr/lib/cgi-bin/generate_logs.cgi
,脚本如下:
#!/usr/bin/perl
use CGI qw(:standard);
print "Content-type: text/plain\n\n";
...
open (my $logs, ">", "/path/to/directory/logs.txt") || die "Unable to open the file: $!";
...
我一直在尝试为.txt
日志文件使用非根路径,例如~/Desktop
,但脚本仍然无法创建/打开日志文件。如果您需要更多信息,请不要问我。提前致谢
答案 0 :(得分:3)
Apache Web服务器通常作为系统上的单独用户运行。您的~/Desktop
目录将特定于您的用户。 Apache写入的任何目录都需要Apache用户可写。
要查找Apache正在运行的用户名,请检查您的配置文件。这可能默认为/etc/httpd/conf/httpd.conf
。您可能会在User
directive的该文件中找到一行。它可能设置为用户apache
。
Apache已经有一个日志目录。通常它是/var/log/httpd
。也许尝试在那里写你的日志。
请注意,您提供的示例代码非常有问题。每次运行CGI脚本时,您的日志文件都将被删除并覆盖。如果它与并发用户一起运行,那么您将遇到更大的问题。两个线程试图写同一个文件,锁定问题等。您可能需要查看CGI::Log
以获得更多功能。