Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想用 Perl 代码向我的 CGI 脚本添加一些日志,如下所示:
open(LOG, ">/path/to/my.log") or die; print LOG "Some content...\n"; close(LOG);
但是,日志永远不会写入我的日志文件,而脚本仍在正确处理请求。
我对 Apache、CGI 和 Perl 不是很熟悉,所以请各位大师指点迷津。
这可能是一个权限问题。脚本的运行者(可能是 user:apache或httpd)nobody没有写入文件的权限。但是,可以肯定的是,您需要检查$!包含的内容。还可以尝试ErrorLog在脚本运行时检查 Apache 的文件。
apache
httpd
nobody
$!
ErrorLog
我会将您的代码重写为:
use CGI::Carp qw( croak ); open my $log, '>', '/path/to/my.log' or croak "Error opening file: $!"; print $log "Some content...\n"; close $log;
问题已解决:对我的 Perl 脚本所做的更改只有在重新启动 Apache 后才会生效。不知道为什么它会这样,因为我认为 Perl 是一种解释性语言,它可以随时修改......