问题:
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。