我正在使用 Apache2/Redhat5.5 配置。我正在尝试配置(并学习)如何运行 Perl 脚本,这对我来说是新事物。
在我的 httpd.conf 文件中,我做了这些更改和/或注意到这些设置:
DirectoryIndex index.html index.html.var index.cgi index.pl
...
AddHandler cgi-script .cgi .pl
...
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
...
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
我已经放置了这个脚本:http://www.seaglass.com/downloads/file_upload.pl进入 /var/www/cgi-bin/ 目录。
然后我将浏览器指向 myIpAddress/cgi-bin/file_upload.pl 并收到“内部服务器错误...服务器遇到内部错误或配置错误,无法...”
然后我检查错误日志发现了这一点:
[Sun Nov 27 19:59:02 2011] [error] [client ***] (2)No such file or directory: exec of '/var/www/cgi-bin/file_upload.pl' failed
[Sun Nov 27 19:59:02 2011] [error] [client ***] Premature end of script headers: file_upload.pl
[Sun Nov 27 19:59:02 2011] [error] [client ***] File does not exist: /var/www/html/favicon.ico
答案1
假设您已启用 SELinux,请使用以下命令打开 CGI:
setsebool -P httpd_enable_cgi on
这假设脚本已正确上传。如果以 DOS 格式保存或通过 ftp 以二进制模式上传,Perl 脚本运行效果会不太好。如果您没有通过 ftp 复制文件(而是通过 scp 或 sftp),请使用以下命令转换文件:
dos2unix file_upload.pl
答案2
在我看来,这可能意味着perl
您的机器上没有安装,或者它可能位于不同于的路径/usr/bin/perl
。请尝试/usr/bin/perl -v
在命令行中输入以确认 perl 确实已安装。
您也可能缺少对 的执行权限/var/www/cgi-bin/file_upload.pl
。