2016-09-12 13 views
4

私は、同僚がCGIスクリプトを実行できるように自分のMacでテスト設定を手伝ってもらうのを手伝っています。私はLinuxの人で、彼はサーバーの人ではないので、私たちの間では、最も基本的なセットアップを動作させるのに問題があります。ここでは、これまでに何をやったかです:MacOS + apache、CGIスクリプトでエラーが発生する

有効/インストールのapache:

sudo apachectl start 

ファイルを編集し/etc/apache2/httpd.confとのコメントを解除し、この行:同じファイルで

#AddHandler cgi-script .cgi 

、始まる行を編集しますOptionsで、+ExecCGIをオプションのリストに追加します。

サンプルperl CGIスクリプトtest.cgiを/Library/WebServer/CGI-Executablesにインストールし、実行可能にします。ソースコードは:

#!/opt/local/bin/perl 
print "Content-Type: text/html\n\n"; 
print "<html> <head>\n"; 
print "<title>Hello, world!</title>"; 
print "</head>\n"; 
print "<body>\n"; 
print "<h1>Hello, world!</h1>\n"; 
print "</body> </html>\n"; 

我々はURL http://localhost/cgi-bin/test.cgiに行く、結果は意味HTTPエラーコード304であり、「変更されません。」これは私には分かりません。通常はキャッシングと関連があるようですが、それは単に私たちの状況には関係していないようです。

Apacheのエラーログには何も表示されません。 + ExecCGIオプションを追加する前に、ブラウザにスクリプトのソースコードが表示されるため、Apacheがスクリプトを検出していることがわかりました。私たちは、すべてが世界的に読めるし、実行したことを確認して、権限を持つ問題をチェックしてみました:

ls -ld /Library/WebServer/CGI-Executables 
drwxr-xr-x 7 root wheel 238 Sep 2 13:58 /Library/WebServer/CGI-Executables 
ls -l /Library/WebServer/CGI-Executables/test.cgi 
-rwxr-xr-x 1 root wheel 343 Sep 2 13:58 /Library/WebServer/CGI-Executables/test.cgi 

スクリプトの所有者とグループは思われる、スクリプトが住んでいるディレクトリのものと同じです合理的。

何が間違っているのか、それを修正する方法については、誰でも提案できますか?

+0

あなたが/ '/ライブラリ/ WebServer/CGI-実行可能ファイルを呼び出すことができますtest.cgi'(そのような)シェルから? URLにGETパラメータを追加するとどうなりますか? 'http://localhost/cgi-bin/test.cgi?test'? –

+0

一部のコマンドラインクライアントから完全な逐語応答ヘッダーを投稿することはできますか? – covener

答えて

1

私はあなたの/etc/apache2/httpd.confにオプションのExecCGIを追加する必要があると思う - ディレクトリに特定のスタンザをそれを追加

<Directory "/Library/WebServer/CGI-Executables"> 
    Options ExecCGI 
    AddHandler cgi-script .cgi 
</Directory> 
関連する問題