編集:この質問は、How can I troubleshoot my Perl CGI script?の重複として誤ってマークされています。その質問は、perlプログラムをデバッグする方法を説明しています。この場合、私はそれまでにさえ得ていませんでした。問題はApacheディレクティブで相対パスを使用したApache設定問題であることが判明しました。 。perl CGIスクリプトを実行するためにApacheを取得できません
元質問: 私はubuntuテストサーバー(16.04.2 LTS)をセットアップしており、perl cgiスクリプトを実行するためにそのサーバーにApacheを取得しようとしています。コマンドラインからうまく動作しますが、ブラウザには常にソースコードが表示されます。私はこのサイトと他のサイトの両方で多くのアドバイスを行ってきましたが、うまくいきませんので、どんな助けでも大歓迎です。
私のサイトのconfファイルには、この(私は、ディレクトリごとにスクリプトを実行できるようにしたい)のようになります。
<VirtualHost *:443>
DocumentRoot "/var/www/test"
ServerName mydomain.org
<Directory "/var/www/test">
allow from all
Options None
Require all granted
</Directory>
SSLEngine on
SSLCertificateFile /etc/webmin/letsencrypt-cert.pem
SSLCertificateKeyFile /etc/webmin/letsencrypt-key.pem
SSLCACertificateFile /etc/webmin/letsencrypt-ca.pem
<Directory "path/to/dir">
Options ExecCGI Indexes
AddHandler cgi-script .pl
</Directory>
</VirtualHost>
マイモッズ対応のディレクトリは次のようになります。
access_compat.load autoindex.conf mime.conf setenvif.load
alias.conf autoindex.load mime.load socache_shmcb.load
alias.load cgi.load mpm_prefork.conf ssl.conf
auth_basic.load deflate.conf mpm_prefork.load ssl.load
authn_core.load deflate.load negotiation.conf status.conf
authn_file.load dir.conf negotiation.load status.load
authz_core.load dir.load php7.0.conf
authz_host.load env.load php7.0.load
authz_user.load filter.load setenvif.conf
error.logにエラーはありません。アクセスログには次のようなメッセージが表示されます。
mydomain.org:443 xx.xxx.xxx.xx - - [27/Apr/2017:10:37:02 +0100] "GET /path/to/dir/test.pl HTTP/1.1" 304 3921 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
スクリプト(test.pl)はsimですコマンドラインから
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, world!\n";
私がここで間違っていることを教えてもらえますか?
私が見る最初のもの: '「パス/に/ DIR」'絶対パスでなければなりませんが ' "/ path/to/dir" 'それはできませんか?また、あなたの '.pl'スクリプトは適切な'#! '行で実行可能ですか? – cbmckay
あなたの星!それが絶対的な道を作った!明確にするために、DocumentRootに相対的なパスを指定する方法はありますか? – Kees
私は 'Location:'があなたの望むものだと思います。 '.htaccess'ファイルを使うこともできます。それらは、それらが置かれているディレクトリに適用されます。そして/または、ファイル拡張子を使って 'Files'ディレクティブを使って実行することができます。 – cbmckay