【问题标题】:Complex cgi script works, but test.cgi doesn't复杂的 cgi 脚本可以工作,但 test.cgi 不能
【发布时间】:2023-11-24 02:44:02
【问题描述】:

我在同一个 cgi-bin 文件夹中有两个 cgi 文件。一个复杂的 300000 行脚本可以正常工作,但是当涉及到这个简单的 cgi 脚本时:

#!/usr/bin/perl -w
print "Content-type: text/html\n\n";
print "<html><head>";
print "<title>CGI Test</title>";
print "</head>";
print "<body><h1>I just wrote a web page using Perl!</h1>";
print "</body></html>";

网页将返回 500 Internal Server Error...

为什么?:(

编辑: 好的,问题在一台服务器上解决了,cgi 工作正常。但是...
现在我正试图让 cgi 脚本在另一台服务器上工作,似乎无论我做什么,我都会不断收到“内部服务器错误”消息,并且错误日志中没有任何内容。 有什么建议吗?

【问题讨论】:

    标签: cgi-bin


    【解决方案1】:

    想到两种可能性:

    • 您的简单脚本没有执行权限集
    • test.cgi 是一个特殊名称,由服务器配置重定向到别处

    你能从命令行运行test.cgi吗?

    【讨论】:

      【解决方案2】:

      查看网络服务器日志了解详情。

      在大多数情况下,这是一个权限问题,不仅是执行此脚本的权限,而且例如某些网络服务器出于安全原因默认拒绝执行具有 777 或任何其他可写权限的脚本。

      尝试为该文件设置 644 权限。

      【讨论】:

      • 已将权限设置为 0644,看来要工作需要“0755”。 :d
      【解决方案3】:

      关于您的后续问题:另一台服务器是什么类型的服务器?另外,问题是特定脚本还是所有脚本?你可以在你的 cgi-bin 中使用任何脚本吗?如果没有,可能是您的虚拟主机配置不正确,或者 perl 安装在其他地方。

      【讨论】:

      • cgi-bin 中没有脚本可以运行,我检查了 perl 的路径,它是 usr/bin/perl。我想我必须与托管方的支持人员谈谈。
      【解决方案4】:

      我已经和托管公司谈过了,他们说他们不提供任何“CGI/PERL”脚本托管...

      所以,问题解决了……(有点)。

      教训:在购买主机包之前务必仔细阅读:D

      【讨论】: