问题:
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
我的Apache2configuration文件中有这个块:
<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>
我不知道发生了什么事。
我猜你的脚本的第一行有你的机器上不存在的解释器的名字。
现在,这种差异可能会如此微妙,因为如果将脚本从Windows计算机移动到以^ M字符结尾的UNIX计算机上。
我的build议是用'vi'打开文件,看它是否在屏幕底部显示“[dos]”。 如果确实如此,那么我的猜测是正确的。
最简单的工具是dos2unix。