我希望你能帮助,我只是一个初学者!我列出了一些可能不相关的额外细节。
我使用 ASCII 格式的 FTP95Pro 将 cgi 脚本上传到 Apache/2.2.10 服务器上的本地/个人目录。脚本在终端会话中使用我的网络服务器上的 perl 正确执行。因此我的代码没有致命的语法错误。
网页“操作”/cgi-bin/ 中的每个 cgi 脚本。有符号链接将系统目录文件链接到我的本地目录文件。FollowSymLinks 已启用(不确定如何)。权限正确 (755)。显然,这种设置并没有改变。
这些脚本多年来一直完美执行,直到 2010 年。但现在,在 2010 年,我用新的脚本/文件替换了工作脚本,现在具有完全相同的文本、文件名和权限。只有日期(最后修改)已更改。但现在我收到 500 Internal Server Error,无法确定原因。我的服务器管理员假设我有代码错误。但代码自去年以来没有变化,并且使用 perl myscript.cgi 在 Web 服务器控制台上运行良好(尽管没有参数)
有什么你能想到的可能已经改变的地方吗?我怀疑新的十年。我认为服务器去年从 Linux 切换到了 Windows 操作系统,但我的服务器管理员让它一切正常。2010 年有什么他可能错过的不寻常的事情吗?
Spamassassin 中有一个众所周知的 2010 错误,与正则表达式有关。也许你的情况类似。我建议您重新检查您的代码以了解与日期相关的假设。我投票决定将此问题移至 Stackoverflow。
除非 CGI 脚本在 2010 年 1 月 1 日发生故障,否则我强烈怀疑它与 2010 年有关。
请参阅Perl 和 CGI 常见问题解答的问题 Q3.4 ,并仔细检查此Perl CGI 脚本调试列表中的项目。
使用
diff
工具比较新旧版本,以验证您的源代码中没有其他不同之处。添加 Perl Cgi:Carp支持以帮助调试已安装的脚本。
在 Perl 脚本中使用
use warnings
anduse strict
测试使用
perl -c script.cgi
(见perldoc perlrun
:)