Apache-2.2
在 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
假設您啟用了 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
.