ご無沙汰しております。
「cgi-bin」フォルダ以外でCGIを使いたいのですがどの様にしたらいいのでしょうか?
具体的に書きますと
/var/www/html/
/var/www/cgi-bin/
上記で利用しておりますが
/var/www/html/test/ でtest.cgiを使いたいのです。(バーチャルドメインにしてtest.xxxxxx.comで利用)
バーチャルドメインを以下の様に追加すると
<VirtualHost *>
DocumentRoot /var/www/html/test
ServerName test.xxxxxx.com
ScriptAlias /cgi-bin/ /var/www/html/test/cgi-bin/
HostNameLookups off
UseCanonicalName on
</VirtualHost>
test.xxxxxx.com/cgi-bin/test.cgiで動作可能なのですが、
<VirtualHost *>
DocumentRoot /var/www/html/test
ServerName test.xxxxxx.com
ScriptAlias /cgi-bin/ /var/www/html/test/
HostNameLookups off
UseCanonicalName on
</VirtualHost>
の様に設定しても
test.xxxxxx.com/test.cgiでは動作できません。
/var/www/cgi-bin/
/var/www/html/test/
上記両方でcgiを有効にする方法を教えて下さい
宜しくお願いします
一言で言えば、ScriptAliasの意味を間違えているのではないですか?
http://httpd.apache.org/docs-2.1/ja/mod/mod_alias.html#scriptalias
Apacheのドキュメントは、結構しっかり書かれているのでよく読まれるといいです。ただ、事例があまりふさわしくないケースがあるので、注意が必要ですが。
> 具体的に書きますと
> /var/www/html/
> /var/www/cgi-bin/
>
> 上記で利用しておりますが
> /var/www/html/test/ でtest.cgiを使いたいのです。(バーチャルドメインにしてtest.xxxxxx.comで利用)
>
>
> バーチャルドメインを以下の様に追加すると
>
> <VirtualHost *>
> DocumentRoot /var/www/html/test
> ServerName test.xxxxxx.com
> ScriptAlias /cgi-bin/ /var/www/html/test/cgi-bin/
> HostNameLookups off
> UseCanonicalName on
> </VirtualHost>
>
> test.xxxxxx.com/cgi-bin/test.cgiで動作可能なのですが、
これは、当然動作します。
> <VirtualHost *>
> DocumentRoot /var/www/html/test
> ServerName test.xxxxxx.com
> ScriptAlias /cgi-bin/ /var/www/html/test/
> HostNameLookups off
> UseCanonicalName on
> </VirtualHost>
>
> の様に設定しても
> test.xxxxxx.com/test.cgiでは動作できません。
これは、動くはずはありません。
ScriptAlias /cgi-bin/ /var/www/html/test/
というのは、http://xxx.xxx.xxx/cgi-bin/とアクセスされたら、すなわちドキュメントルート直下のcgi-binというディレクトリにアクセスしてきたら、それは/var/www/html/test/というディレクトリの別名(Alias)のことで、AliasといってもScriptAliasなので、そのディレクトリ配下(/var/www/html/test/)のファイルはCGI スクリプトとして実行するという意味です。
test.xxxxxx.com/test.cgiとアクセスしたら、確かに/var/www/html/test/test.cgiにアクセスはしていますが、上記設定(ScriptAlias)はこのアクセスには全く関係ないので、test.cgiはCGIとしては実行されません。test.xxxxxx.com/cgi-bin/test.cgiなら、同じファイルにアクセスしますがCGIとして実行されます。
>
> /var/www/cgi-bin/
> /var/www/html/test/
> 上記両方でcgiを有効にする方法を教えて下さい
単純な話、CGIを動作させたいディレクトリの最上位のディレクトリでOptionsディレクティブでExecCGIオプションを指定してあげればいいだけです。
http://httpd.apache.org/docs-2.1/ja/mod/core.html#options
ScriptAliasは、ドキュメントルート以外(今回は/var/www/cgi-bin/)でCGIを動かす場合に使います。例えば上記なら、こんな感じです。
<VirtualHost *>
DocumentRoot /var/www/html/test
ServerName test.xxxxxx.com
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
HostNameLookups off
UseCanonicalName on
<Directory /var/www/html/test>
Options +ExecCGI
</Directory>
</VirtualHost>
おやじ様へ
レスありがとうございます。
お陰様で希望通りになりました。
感謝感激です!
ありがとうございました。