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

これは、スクリプトが正しくアップロードされていることを前提としています。Perl スクリプトは、DOS 形式で保存されているか、ftp 経由でバイナリ モードでアップロードされている場合は、うまく動作しません。ftp 経由でファイルをコピーしなかった場合 (代わりに scp または sftp 経由)、次のコマンドでファイルを変換します。

dos2unix file_upload.pl

答え2

perlこれは、マシンに がインストールされていないか、 とは異なるパスにある可能性があるように思われます。コマンド ラインで と/usr/bin/perl入力して/usr/bin/perl -v、perl が実際にインストールされていることを確認してください。

の実行権限がない可能性もあります/var/www/cgi-bin/file_upload.pl

関連情報