Apache-2.2

在 Apache2/Redhat5.5 上執行 Perl 腳本

  • November 27, 2011

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

假設您啟用了 SELinux,請使用以下命令打開 CGI:

setsebool -P httpd_enable_cgi on

這假定腳本已正確上傳。如果 Perl 腳本以 DOS 格式保存或通過 ftp 以二進制模式上傳,則它們不會執行得很好。如果您沒有通過 ftp(而是 scp 或 sftp)複製文件,請使用以下命令轉換文件:

dos2unix file_upload.pl

這對我來說聽起來你可能沒有perl在你的機器上安裝,或者它可能位於不同於/usr/bin/perl. 嘗試/usr/bin/perl -v在命令行輸入以確認 perl 確實已安裝。

您也可能缺少對/var/www/cgi-bin/file_upload.pl.

引用自:https://serverfault.com/questions/335245