3

我正在尝试运行一个 cgi 脚本,它是一个很长的脚本,所以我不会在这里粘贴,但它可以在我的其他服务器上运行,但是由于某种原因,当我尝试在我的新服务器上运行它时,我得到内部服务器错误 (500),当我在这里检查 apache 日志是我得到的:

[Fri Mar 30 08:38:29 2012] [error] [client 199.212.76.124] (2)No such file or directory: exec of '/var/www/cgi-bin/test.cgi' failed
[Fri Mar 30 08:38:29 2012] [error] [client 199.212.76.124] Premature end of script headers: test.cgi
[Fri Mar 30 08:38:29 2012] [error] [client 199.212.76.124] File does not exist: /var/www/htdocs/favicon.ico
[Fri Mar 30 08:41:11 2012] [error] [client 199.212.76.124] (2)No such file or directory: exec of '/var/www/cgi-bin/test.cgi' failed
[Fri Mar 30 08:41:11 2012] [error] [client 199.212.76.124] Premature end of script headers: test.cgi
[Fri Mar 30 08:41:11 2012] [error] [client 199.212.76.124] File does not exist: /var/www/htdocs/favicon.ico
[Fri Mar 30 08:41:12 2012] [error] [client 199.212.76.124] (2)No such file or directory: exec of '/var/www/cgi-bin/test.cgi' failed
[Fri Mar 30 08:41:12 2012] [error] [client 199.212.76.124] Premature end of script headers: test.cgi
[Fri Mar 30 08:41:12 2012] [error] [client 199.212.76.124] File does not exist: /var/www/htdocs/favicon.ico
[Fri Mar 30 08:41:15 2012] [error] [client 199.212.76.124] (2)No such file or directory: exec of '/var/www/cgi-bin/test.cgi' failed
[Fri Mar 30 08:41:15 2012] [error] [client 199.212.76.124] Premature end of script headers: test.cgi
[Fri Mar 30 08:41:15 2012] [error] [client 199.212.76.124] File does not exist: /var/www/htdocs/favicon.ico
[Fri Mar 30 08:41:20 2012] [error] [client 199.212.76.124] (2)No such file or directory: exec of '/var/www/cgi-bin/upload.cgi' failed
[Fri Mar 30 08:41:20 2012] [error] [client 199.212.76.124] Premature end of script headers: upload.cgi
[Fri Mar 30 08:41:20 2012] [error] [client 199.212.76.124] File does not exist: /var/www/htdocs/favicon.ico
[Fri Mar 30 08:41:21 2012] [error] [client 199.212.76.124] (2)No such file or directory: exec of '/var/www/cgi-bin/upload.cgi' failed
[Fri Mar 30 08:41:21 2012] [error] [client 199.212.76.124] Premature end of script headers: upload.cgi
[Fri Mar 30 08:41:21 2012] [error] [client 199.212.76.124] File does not exist: /var/www/htdocs/favicon.ico
[Fri Mar 30 08:41:29 2012] [error] [client 199.212.76.124] (2)No such file or directory: exec of '/var/www/cgi-bin/upload.cgi' failed, referer: http://bla.com
[Fri Mar 30 08:41:29 2012] [error] [client 199.212.76.124] Premature end of script headers: upload.cgi, referer: http://bla.com

我已经尝试了一切,chmod 文件,重新安装 perl 模块,重新检查配置等!!!!想不通是什么问题!!!但我可以保证剧本没有坏!

问候

4

3 回答 3

2

尝试运行:

perl -c /var/www/cgi-bin/upload.cgi

来自 perldoc perlrun 的报价:

   -c   causes Perl to check the syntax of the program and then exit
        without executing it.  Actually, it will execute "BEGIN",
        "UNITCHECK", "CHECK", and "use" blocks, because these are
        considered as occurring outside the execution of your program.
        "INIT" and "END" blocks, however, will be skipped.
于 2012-03-30T07:05:48.133 回答
2

使用 perl -w /var/www/cgi-bin/upload.cgi 运行您的脚本。

我应该写出一个 HTTP 标头

Content Type: text/html
[blank line]

如果没有,您的脚本无法正常运行。也许另一台服务器向您传递了一个变量,您的脚本将不再创建正确的标头。

将此代码粘贴到脚本的最末尾。如果您的脚本看起来很糟糕,但工作正常,您会发现 bug.print("Content Type: text/html\n\n");

print("Content Type: text/html\n\n");

问候,

于 2012-03-30T11:04:56.147 回答
1

其他要检查的事情是

  • perl 在第一个 like (#!/usr/..) 中的位置
  • dos2unix 文件,无 asci 字符
  • 不同位置的其他 cgi 脚本以消除 cgi 设置
  • 目录权限?不确定这是否会影响它
于 2012-03-31T13:24:45.593 回答