Apache 无法找到 cgi 文件

Apache 无法找到 cgi 文件

问题:

Apache2 拒绝运行我的 CGI 脚本,告诉我它找不到该文件。

样本日志:

[Wed Jul 14 09:22:19 2010] [error] [client 192.168.111.1] (2)No such file or directory: exec of '/home/pnathan/public_html/ajax.pl' failed
[Wed Jul 14 09:22:19 2010] [error] [client 192.168.111.1] Premature end of script headers: ajax.pl

要点:

ajax.pl 是 chmod 755。它所在的目录树是 chmod 755。我在同一个目录中有另一个正在运行的脚本。

ajax.pl 的 LS:

-rwxr-xr-x 1 pnathan pnathan 534 2010-07-14 09:12 ajax.pl

我的 Apache2 配置文件中包含以下块:

   <Directory /home/pnathan/public_html>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride None
      Order allow,deny
      allow from all
      Options +ExecCGI
      AddHandler cgi-script .pl .py
   </Directory>

我不知道发生了什么事。

答案1

我猜测你的脚本的第一行有一个你的机器上不存在的解释器的名称。

现在,差异可能很微妙,如果你将脚本从 Windows 机器移动到 UNIX 机器,该行将以 ^M 字符结尾。

我的建议是用“vi”打开文件,看看屏幕底部是否显示类似“[dos]”的内容。如果是,那么我的猜测是正确的。

纠正此问题的最简单的工具是 dos2unix。

相关内容