
私は 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
。