Top過去ログ目次掲示板

作成日:2005年01月25日 作成:おやじ
掲示板で過去に質問された内容です。

No.4226 CGIについて


No.4226 投稿時間:2005年01月25日(Tue) 11:36 投稿者名:ひとし URL:
タイトル:CGIについて

ご無沙汰しております。
「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を有効にする方法を教えて下さい
宜しくお願いします


No.4227 投稿時間:2005年01月25日(Tue) 18:09 投稿者名:おやじ URL:http://http://www.aconus.com/~oyaji/
タイトル:ScriptAliasの意味を間違えているのではないですか?

一言で言えば、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>


No.4250 投稿時間:2005年01月28日(Fri) 08:37 投稿者名:ひとし URL:
タイトル:Re: ScriptAliasの意味を間違えているのではないですか?

おやじ様へ
レスありがとうございます。
お陰様で希望通りになりました。
感謝感激です!
ありがとうございました。



掲示板▲頁先頭