我有一些perl脚本文件已经启动并运行了几年,突然间,过去几天,它们都是up,down,up,down,.....没有语法对他们来说是错误的,因为有时候他们已经出现了,并且他们已经存在了很长一段时间,我最近没有改变它们。另外,我可以从Lunix shell命令运行它们没有任何问题,文件权限是755,所以一切似乎都设置正确。它们由网络托管公司托管,我无法访问服务器日志文件。
错误消息是典型的perl错误消息:
“ 内部服务器错误 服务器遇到内部错误或配置错误,无法完成您的请求。 请与服务器管理员联系,告知他们错误发生的时间以及您在此错误发生之前执行的操作。 服务器错误日志中可能提供了有关此错误的更多信息。“
答案 0 :(得分:4)
在程序的早期添加use CGI::Carp qw( fatalsToBrowser );
,以便将错误返回给浏览器。
或者,您可以使用CGI :: Carp使用的相同技术或脚本的包装器将错误保存在您自己的日志文件中。
将以下内容添加到脚本的开头,以便将错误和警告记录到您选择的日志文件中。
sub self_wrap {
my $log_qfn = "$ENV{HOME}/.web.log"; # Adjust as needed.
open(my $log_fh, '>>', $log_qfn)
or warn("Can't append to log file \"$qfn\": $!"), return;
require IPC::Open3;
require POSIX;
my $prefix = sprintf("[%s] [client %s] ",
POSIX::strptime('', localtime),
$ENV{REMOTE_ADDR} || '???'
);
my $suffix = $ENV{HTTP_REFERER} ? ", $ENV{HTTP_REFERER}" : '';
my $pid = IPC::Open3::open3(
'<&STDIN',
'>&STDOUT',
local *CHILD_STDERR,
$^X, $0, @ARGV
);
while (<CHILD_STDERR>) {
print(STDERR $_);
chomp;
print($log_fh $prefix, $_, $suffix, "\n");
}
waitpid($pid, 0);
POSIX::_exit(($? & 0x7F) ? ($? & 0x7F) | 0x80 : $? >> 8);
}
BEGIN { self_wrap() if !$ENV{WRAPPED}++; }
答案 1 :(得分:0)
如果您的网站最近被托管公司转移到了其他服务器上,或者最近更改了服务器设置,请尝试使用“另存为”&gt;&gt;保存带有HTML套件的文件。 “另存为UNIX格式”,然后上传。