在 Apache2/Redhat5.5 上运行 Perl 脚本

在 Apache2/Redhat5.5 上运行 Perl 脚本

我正在使用 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

相关内容