Top過去ログ目次掲示板

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

No.4394 たびたび^^;


No.4394 投稿時間:2005年02月28日(Mon) 14:34 投稿者名: URL:
タイトル:たびたび^^;

http://www.miloweb.net/win/server/apache.html
を参考に、/~username で分けたユーザにCGIの実行を可能にしてあげる
を設定しました。

*******************************************************************************
DocumentRoot "C:/Apache/home/public_html"

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

<Directory "C:/Apache/home/public_html">
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>

<IfModule mod_userdir.c>
UserDir "C:/Apache/users/*/public_html/"
</IfModule>

<Directory "C:/Apache/users/*/public_html/">
AllowOverride FileInfo AuthConfig Limit
Options MultiViews SymLinksIfOwnerMatch IncludesNoExec
<LimitExcept GET POST OPTIONS PROPFIND>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>


AddHandler cgi-script .cgi
AddHandler cgi-script .pl


ScriptAlias /cgi-bin/ "C:/Apache/cgi-bin/"

<Directory "C:/Program Files/Apache Group/Apache/cgi-bin">
AllowOverride None
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>

ScriptAlias /cgi-bin/ "C:/Apache/users/*/cgi-bin/"

<Directory "C:/Program Files/Apache Group/Apache/users/*/cgi-bin">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>

*******************************************************************************


http://127.0.0.1/ にアクセスするとC:/Apache/home/public_htmlに行き、
http://127.0.0.1/cgi-bin/aaa/aaa.cgi を実行すると、ちゃんと動きます。

確認のためpublic_html内に.cgiを置いて実行するとソースを表示、
aaa.cgiで使う.datなどはC:/Apache/home/aaa/aaa.datに置いても実行可能。

以上は問題ありません。

そして、http://127.0.0.1/~bbb/ にアクセスすると、C:/Apache/users/aaa/public_htmlに、
ちゃんと行き、表示されます。(.phpも実行可能、.cgiではForbiddenと表示)

本来なら、http://127.0.0.1/~bbb/cgi-bin/ccc/ccc.cgi を実行すると、
C:/Apache/users/bbb/cgi-bin/ccc/内に置いたccc.cgi が動くはずですが、
ページが見つかりませんと表示されます。

参考にしたHPに載ってあった、
UserDir "C:/Apache/users/*/" を
UserDir "C:/Apache/users/*/public_html/" に変えただけなのですが、
これが問題なのでしょうか?

いろいろ探してみましたが、参考となるようなとこは見つかりませんでした。

どなたか原因が分かる方がおりましたら、アドバイスお願いしますm(_)m


PS:
UserDir "C:/Apache/users/*/" にすると、
データーベース(MySQL)にアクセルするプログラム(phpmyadmi)は動くのですが、
UserDir "C:/Apache/users/*/public_html"にすると、動かなくなります。
users/phpmyadmin/public_html/に移動すると動かなくなるのは、
pypmyadiminの設定がいるのでしょうか?

できることなら、phpmyadminだけ、users/phpmyadmin/をUserDirにしたいです。


No.4397 投稿時間:2005年02月28日(Mon) 19:37 投稿者名:おやじ URL:http://http://www.aconus.com/~oyaji/
タイトル:サイトめぐりの弊害?

> http://www.miloweb.net/win/server/apache.html
> を参考に、/~username で分けたユーザにCGIの実行を可能にしてあげる
> を設定しました。

それなら、あちらにもBBSがあるようですから礼儀としてあちらのBBSでスレを建てるべきのような気がしますが?

状況を整理すると、以下の3点が入り混じっているという状況です。

問題点1:基本を押さえないで、複数のサイトのコンテンツを見たため混乱している。
問題点2:自分なりにアレンジしようとしたが一つ一つの設定の意味を理解できていないため、設定に矛盾があった。
問題点3:参照先コンテンツに誤りがあり真似た為、正しく設定できていない。

灯台下暗しですが、下記が参考になるでしょう。

http://www.aconus.com/~oyaji/tips/apache_tips3.htm


> *******************************************************************************
> DocumentRoot "C:/Apache/home/public_html"
>
> <Directory />
> Options FollowSymLinks
> AllowOverride None
> </Directory>
>
> <Directory "C:/Apache/home/public_html">
> Options FollowSymLinks MultiViews
> AllowOverride All
> Order allow,deny
> Allow from all
> </Directory>
>
> <IfModule mod_userdir.c>
> UserDir "C:/Apache/users/*/public_html/"
> </IfModule>
>
> <Directory "C:/Apache/users/*/public_html/">
> AllowOverride FileInfo AuthConfig Limit
> Options MultiViews SymLinksIfOwnerMatch IncludesNoExec
> <LimitExcept GET POST OPTIONS PROPFIND>
> Order deny,allow
> Deny from all
> </LimitExcept>
> </Directory>
>
>
> AddHandler cgi-script .cgi
> AddHandler cgi-script .pl
>
>
> ScriptAlias /cgi-bin/ "C:/Apache/cgi-bin/"
>
> <Directory "C:/Program Files/Apache Group/Apache/cgi-bin">
> AllowOverride None
> Options +ExecCGI
> Order allow,deny
> Allow from all
> </Directory>
>
> ScriptAlias /cgi-bin/ "C:/Apache/users/*/cgi-bin/"
>
> <Directory "C:/Program Files/Apache Group/Apache/users/*/cgi-bin">
> AllowOverride None
> Options ExecCGI
> Order allow,deny
> Allow from all
> </Directory>
>
> ******************************************************************************

問題点3: 何ゆえに「ScriptAlias /cgi-bin/ ・・・」が2行もあるのか? 「ScriptAlias /cgi-bin/」とは、アクセスしてきたURI中(http://localhost/・・・とアクセスした・・・のところ)に、「/cgi-bin/」とあったら、それはScriptAliasの後ろに定義している場所のこと(2行目でいえば、「C:/Apache/users/*/cgi-bin/」で、しかもスクリプト(CGI等)用ディレクトリとして扱うという意味。従って、同じ「/cgi-bin/」で(Script)Alias定義(別名定義)が2個あることはありえない。人間ではないので、AはBという言葉と同じと言われた後、AはCという言葉と同じと言われても、Aはいったい何なのかが一意にきまらないので処理できないですよね。恐らく一行目が有効になっているはず。

問題点1/2: ScriptAliasとDirectoryで指定しているドキュメントの指定が完全にミスマッチ。

ScriptAlias /cgi-bin/ "C:/Apache/cgi-bin/"
<Directory "C:/Program Files/Apache Group/Apache/cgi-bin">

> http://127.0.0.1/ にアクセスするとC:/Apache/home/public_htmlに行き、
> http://127.0.0.1/cgi-bin/aaa/aaa.cgi を実行すると、ちゃんと動きます。
>
> 確認のためpublic_html内に.cgiを置いて実行するとソースを表示、
> aaa.cgiで使う.datなどはC:/Apache/home/aaa/aaa.datに置いても実行可能。
>
> 以上は問題ありません。
>
> そして、http://127.0.0.1/~bbb/ にアクセスすると、C:/Apache/users/aaa/public_htmlに、
> ちゃんと行き、表示されます。(.phpも実行可能、.cgiではForbiddenと表示)

「.cgiではForbiddenと表示」となるのは、C:/Apache/users/aaa/public_html以下で、CGIが実行できるようにOptions指定していないからと思います。

> 本来なら、http://127.0.0.1/~bbb/cgi-bin/ccc/ccc.cgi を実行すると、
> C:/Apache/users/bbb/cgi-bin/ccc/内に置いたccc.cgi が動くはずですが、
> ページが見つかりませんと表示されます。

Tipsにあるとおりというより、~usersなら "C:/Apache/users/*/public_html/" とUserDirで指定しているのですから、上記では、
C:/Apache/users/bbb/public_html/cgi-bin/ccc/ccc.cgiとpublic_html配下のcgi-binフォルダ以下にアクセスします。

> 参考にしたHPに載ってあった、
> UserDir "C:/Apache/users/*/" を
> UserDir "C:/Apache/users/*/public_html/" に変えただけなのですが、
> これが問題なのでしょうか?
>
> いろいろ探してみましたが、参考となるようなとこは見つかりませんでした。

Apacheはドキュメントがしっかりしていますから、ドキュメントを見たほうがいいですよ。
但し、例があまりよくはないですが・・・。



掲示板▲頁先頭