トップページunix
1001コメント297KB

Apache関連 Part8

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2006/01/04(水) 16:46:23
HTTP ServerのApacheに関する話題を扱うスレッドです。

http://httpd.apache.org/



HTTP Serverの最新Versionは
Apache/2.2.0
Apache/2.0.55
Apache/1.3.31


●まずはマニュアル嫁。
 http://httpd.apache.org/docs/ Apache 1.3
 http://httpd.apache.org/docs/2.0/ Apache 2.0
 http://httpd.apache.org/docs/2.2/ Apache 2.2

●「自分」でバージョンぐらい調べるれ。
 httpd -h
 httpd -V コンパイル条件など詳細な情報

Apache関連 Part7
http://pc8.2ch.net/test/read.cgi/unix/1108649446/
Apache関連 Part6
http://pc5.2ch.net/test/read.cgi/unix/1084829611/
0182名無しさん@お腹いっぱい。2006/02/03(金) 23:03:32
そーゆー表記もあるでーよー
>>180
激同
0183名無しさん@お腹いっぱい。2006/02/03(金) 23:10:43
>>177はNTT職員
0184名無しさん@お腹いっぱい。2006/02/03(金) 23:15:27
このビルジング内にあるオージオ機器のヒューズが飛んだので、
ハードジスクからレストアしてください。
0185名無しさん@お腹いっぱい。2006/02/03(金) 23:35:09
>>181
ネットワーク屋ではトラヒックが普通
0186名無しさん@お腹いっぱい。2006/02/04(土) 00:10:46
酔っ払った虎がおりました。
虎曰く、「虎ヒック…」

おあとがよろしいようで…
0187名無しさん@お腹いっぱい。2006/02/04(土) 00:36:32
虎は日本語喋りません。
0188名無しさん@お腹いっぱい。2006/02/04(土) 00:36:43
回線屋の用語だから、別に変ではないよなぁ。
0189名無しさん@お腹いっぱい。2006/02/04(土) 00:37:32
回線屋のドカチン用語だよ。
変だって気が付かないからドカチンなんだよねw
0190名無しさん@お腹いっぱい。2006/02/04(土) 01:09:31
もしかしたらもの凄く簡単なことなのかもしれませんが、質問させてください。

example.jp/

へのアクセスの場合に、パソコンからは example.jp/index.html を表示させ、
携帯からは example.jp/i/ へリダイレクトさせる方法は、
Apache の設定のみで可能でしょうか?

・アクセス元関係無しのリダイレクト
・携帯以外はアクセス拒否

の二つは個別で設定出来るのは確認したのですが、
自分のやりたいことはその組み合わせで実現させられるのではないかと
思っていますが、そういった組み合わせを解説しているサイトがなく、
試行錯誤しましたが、自分では解決しそうにありません。

ブログコンテンツなので、アクセス制御の CGI を間に
挟むことは避けたい希望があるので、どうにか Apache の設定のみの
手法を探しています。

ご存じの方、よろしくお願いします。

環境は Apache 1.3.34 です。
0191名無しさん@お腹いっぱい。2006/02/04(土) 01:16:25
よく知らんけど、
携帯かどうかの判断ってどうやってるの?
0192名無しさん@お腹いっぱい。2006/02/04(土) 01:23:37
・アクセス元関係無しのリダイレクト ← Redirectディレクティブ?
・携帯以外はアクセス拒否 ←SetEnvIf or BrowserMatch と Deny?

Redirectディレクティブは環境変数使えないからこの組み合わせは無理かな。
まあかなり変なやり方だけど、SetEnvIf or BrowserMatch と Deny と ErrorDocument で出来なくもないかな。

ErrorDocument 403 http://example.jp/i/
BrowserMatch ○○ phone
Deny from env=phone


まあ普通はmod_rewriteだな
0193名無しさん@お腹いっぱい。2006/02/04(土) 02:03:37
>>191
各キャリア公開の IP アドレスを使っての allow/deny です。

>>192
・アクセス元関係無しのリダイレクト ← Redirectディレクティブ?
・携帯以外はアクセス拒否 ←SetEnvIf or BrowserMatch と Deny?

BrowserMatch 以外はほぼその通りです。
やはり、変なやり方だったんですね。

もう一度 mod_rewrite のリファレンスに目を通してみます。
ありがとうございました。
0194名無しさん@お腹いっぱい。2006/02/04(土) 02:17:46
失礼しました。
Redirect と mod_rewrite は別物だったんですね。
一から勉強し直してきます。

アドバイスありがとうございました。
0195名無しさん@お腹いっぱい。2006/02/04(土) 19:47:17
2.2.0と2.0.55、
どっちがお勧め?
公式のアナウンスではどっちもstableになってるし
何を基準にバージョンを変えればいいのか分からんです
0196名無しさん@お腹いっぱい。2006/02/04(土) 20:32:41
両方ともStableだから2.2.0にしとけ

だた、両者はモジュールの互換性はバイナリレベルではない
再コンパイルが必要

この意味が分からないなら2.0.55のほうがいいかもしれない
0197名無しさん@お腹いっぱい。2006/02/05(日) 02:30:12
mod_suid2使いたいのですが、
apacheをrootで起動する必要があり、ぐぐってもこれを理由に使用を躊躇してる
人ばかり。
リスクが上るのは分かるんですが、
実際apacheをrootで起動するのってどれくらい危険度が上るものでしょうか?
apacheのセキュリティホールを常に埋めるように注意しておけば大丈夫?

あと、このmod_suid2を改造したmod_ruidというのがあるみたいなんですが、
ぐぐっても情報は0に近いです(日本語意外でさえ)
識者の方、コメントきぼんぬ
0198名無しさん@お腹いっぱい。2006/02/05(日) 02:38:45
ちょっとしたCGIのミス、例えば読み出しファイルの指定時に"../"を処理し忘れていた時などに
/etc/shadowを外部から読み出せる可能性が出てきたりするわけだけど
それでも平気なら。
0199名無しさん@お腹いっぱい。2006/02/05(日) 03:09:59
>>198
なんか違くない? コンテンツ取得時には setuid 済みです。

>>197
setuid を実行するまでの間、root 権限を持っていることが
問題なわけでしょ。例えばだけど、HTTP ヘッダを解釈して
apache が色々な判定処理をするわけじゃん。文字列の処理ってのは
バグでバッファオーバーフローとか起こす可能性が高いわけよ。
もっと具体的な例で言うと Host: ヘッダの解釈にバグがあったと
しよう。これに exec /bin/sh ができるように悪意のあるコードを
押し込むと、そのまま簡易 telnet に早変わりですよと(w

これらの問題は、同時に使用するモジュールの影響も受けるので、
単に apache のみを最新にしてれば大丈夫ってわけでもない。
02001992006/02/05(日) 13:02:42
肝心なことを忘れてた。簡易 telnet はログインも必要とせずに
いきなり root で /bin/sh が使えるということです。

# バッファオーバーフローなんかで /bin/sh を起動されて
# 侵入されるところまでは、別に root で動作してなくてもあり得ることだ罠。
0201名無しさん@お腹いっぱい。2006/02/07(火) 03:49:23
LDAPでwebdavのユーザー認証管理はできますか?
0202名無しさん@お腹いっぱい。2006/02/07(火) 08:13:49
はい
0203名無しさん@お腹いっぱい。2006/02/09(木) 02:49:59
騙されてはいけません。
0204名無しさん@お腹いっぱい。2006/02/09(木) 09:29:47
はい
0205名無しさん@お腹いっぱい。2006/02/09(木) 09:57:31
はいじゃないが
0206名無しさん@お腹いっぱい。2006/02/09(木) 09:59:13
いいえ
0207名無しさん@お腹いっぱい。2006/02/09(木) 10:33:04
ディセンド
0208名無しさん@お腹いっぱい。2006/02/09(木) 11:26:17
あたまさげろ
0209名無しさん@お腹いっぱい。2006/02/09(木) 15:58:00
m(_ _)m
0210名無しさん@お腹いっぱい。2006/02/09(木) 18:23:16
山だぞ山
0211名無しさん@お腹いっぱい。2006/02/09(木) 19:34:24
今は谷でつ
0212名無しさん@お腹いっぱい。2006/02/09(木) 20:52:03
         _,,..,,,,_
        ./ ,' 3  `ヽーっ 
        l   ⊃ ⌒_つ
         `'ー---‐'''''"

       荒巻スカルチノフ
0213名無しさん@お腹いっぱい。2006/02/10(金) 01:43:03
virtualhostでもuserdirでアクセスできてしまうけど、
これを禁止する方法ないでしょうか?

例:
ttp://localhost/~user/
ttp://virtualhost/~user/
どっちでもアクセスできてしまうのです
mod_rewriteで設定しかないでしょうか?

あと疑問ですが、mod_rewriteってかなりパフォーマンス落ちそうだけど
httpd.confにmod_rewrite関係100行くらい記述したとして、
影響がある(遅くなる)のはmod_rewriteが機能するとき
(RewriteRuleに当てはまるとき)だけ?
それともapacheの全体の動作自体重くなるのでしょうか?
0214名無しさん@お腹いっぱい。2006/02/10(金) 03:04:22
mod_userdirをロードしなきゃいいだけでは?
0215名無しさん@お腹いっぱい。2006/02/10(金) 03:12:02
localhostもVirtualHostで記述して、そこでUserDirかな。
0216名無しさん@お腹いっぱい。2006/02/10(金) 08:30:30
>>213
そういうボトルネックがあるかどうかを調べるために
ab というツールが付属しているのでは?

mod_rewrite とかいう以前に、モジュール構成やら
テンコモリライブラリ等のせいもあって、apache は
今となっては大して早いサーバではないよ。速度的に
問題があると思ったら、クラスタにしてカバーする
とか考えた方がいいと思うよん。それでも「使いやすい」
というすごいメリットが apache にはあるんだしね。

とは言え、必要十分な速度はありますが。
0217名無しさん@お腹いっぱい。2006/02/10(金) 09:36:56
>>152
駄メルコのルータにアタックブロックという機能があるのですが、
これが、一度に複数の接続要求があると、攻撃と見なしてはじいていたようです。
この機能をオフにしたら問題は解消されました。
0218名無しさん@お腹いっぱい。2006/02/10(金) 09:48:17
>>217
うはwwwやっぱりルータは自作に限るね
0219名無しさん@お腹いっぱい。2006/02/10(金) 09:52:18
<VirtualHost virtualhost>
UserDir disabled
</VirtulaHost>

自分がこれまで見た mod_rewrite の利用例のうち、
mod_rewrite でないと解決できないものは極めて稀。
0220名無しさん@お腹いっぱい。2006/02/11(土) 01:38:21
mod_rewrite について質問させてください。
現在下記の内容を httpd.conf に記述しております。
------------------
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteLog "logs/rewrite_log"
  RewriteLogLevel 0

  RewriteCond %{HTTP_HOST} ^host.explet.com(.*)
  RewriteRule ^(.*)?$ https://host.explet.com:444$1 [R]

  RewriteCond %{HTTP_HOST} !www.explet.com$
  RewriteRule ^/(.*)?$ http://%{HTTP_HOST}/$1 [L,R]
</IfModule>
--------

上記の設定で、
https://host.explet.com/    左記へアクセスすると
https://host.explet.com:444/  へ変換されるのですが、

GETでアクセスする分には問題ないのですが、
POSTでアクセスした場合、パラメータが全て破棄されております。

例えば hoge.html 内に
<form action="https://host.explet.com/hoge.cgi" method="post">
・・・・
</form>

と記述し、submit しても key=value が一切入ってきません。

mod_rewrite の設定で 何か問題があるような気がするのですが、
お気づきの箇所等ありましたらご教授下さい。
02212202006/02/11(土) 01:41:40
環境が抜けておりました。
すいません。
-----
OS : CentOS4.2
Apache/2.0.52
0222名無しさん@お腹いっぱい。2006/02/11(土) 01:58:55
>>219
でもものによっては記述がきちゃなくなるんだよな。
それでも解決できるから、俺はmod_rewriteはいまだに使えない。
02232202006/02/11(土) 02:10:59
すいません。自己解決しました。
mod_proxy で とりあえず解決しました。。
0224名無しさん@お腹いっぱい。2006/02/11(土) 22:19:56
ディレクトリ単位で設定できるモジュールのディレクティブがあって
次みたいな書き方は有効(***parameter 100が有効)なんでしょうか?
(モジュールやディレクティブによるのでしょうか?)

***moduleはデフォルトではoffとします
<Directory />
***module on
</Directory>

<Directory /home/user>
***parameter 100
</Directory>
0225名無しさん@お腹いっぱい。2006/02/11(土) 23:06:12
>>224
何がしたいのか分からんが、こういう書き方は参考になりまつか?

<Directory "/home/*/">
 ***module on
 ***parameter 100
</Directory>

もしユーザ毎に違う parameter 値をセットしたいなら、個別に
<Directory> を記述するしかないですねぇ。
0226名無しさん@お腹いっぱい。2006/02/12(日) 12:30:55
suexecは~(UserDir)でのアクセスの場合は、
CGIのパスがDOC_ROOT/USERDIR_SUFFIXで始まっているかどうかをチェックしていて、
バーチャルホストの場合は、
DOC_ROOTで始まっているかどうかをチェックしているようなんですが、
バーチャルホストの方が制限が弱いのはどういう理由でしょうか?

UserDirの方もDOC_ROOTのみを判断するようにパッチを当てようと思うのですが、
これによって予期せぬセキュリティホールができるなんてことはあるでしょうか?
0227名無しさん@お腹いっぱい。2006/02/12(日) 13:00:57
>suexecは~(UserDir)でのアクセスの場合は、
>CGIのパスがDOC_ROOT/USERDIR_SUFFIXで始まっているかどうかをチェックしていて、

$HOME/public_html にあるかどうかはチェックしてるけど、
document root の下にあるかどうかは見てないぞ。
0228名無しさん@お腹いっぱい。2006/02/12(日) 13:03:01
>>226
詳しくないのですが、その「チェックしているようなんですが」というのは、確実ですか。
ttp://httpd.apache.org/docs/2.0/ja/suexec.html#install
--with-suexec-userdir=DIR
の説明からすると、ちゃんと検証してる (少なくともそのつもり) じゃないでしょうか。
ここより、開発のMLにポストしてみたらどうでしょう。
0229名無しさん@お腹いっぱい。2006/02/12(日) 13:05:04
末尾には
> suEXEC コードの改造
> 繰り返しますが、何をやろうとしているか把握せずにこれをやると 大きな問題を引き起こしかねません。 可能な限り避けてください。
とありますね。
02302262006/02/12(日) 13:21:52
>>227
すいません、おっしゃるとおりでした。

>>228
227さんの部分を訂正すればほぼ確実です、ソースを確認しましたので。
PHPばっかり弄っててCは初さわりなんですが、若干コードを読めて感動しましたw
開発関係ですか、考えてもみませんでした。

>>229
そこが怖いですね、ただ今回の場合、
USERDIR_SUFFIXはコンパイル時に指定できるので、
USERDIR_SUFFIXを空にすれば同じことが実現できそうな気がします。
しかし、それでも完全に把握してないと何か起きそうで怖いですね・・・
02312262006/02/12(日) 13:38:19
USERDIR_SUFFIX(--with-suexec-userdir=)
を空で指定したら
cannot get docroot information suexec
が出てしまいました・・・orz

suexec.c の ((chdir(USERDIR_SUFFIX)) != 0) というところで
ひっかっかってる予感です、やっぱりソースを弄らなければ orz
0232名無しさん@お腹いっぱい。2006/02/12(日) 13:40:24
なんでそんなことしたいのかわからん。

>USERDIR_SUFFIXを空にすれば同じことが実現できそうな気がします。

$HOME/public_html ではなく $HOME の下にあるかどうかのチェックに
したいということか? そんなことすると、suexec でない CGI の中で、

system("suexec user group bin/hoge");

のように suexec のバイナリを直接指定して実行すると、
たぶん user の権限で /home/user/bin/hoge が動いちゃうぞ。
いや、確認してないけど。

public_html/fuga.cgi ならば、そういうふうに実行されても
問題ないように作られてるだろうけど、bin/hoge がそうなってる可能性は皆無だ。
0233名無しさん@お腹いっぱい。2006/02/12(日) 13:47:16
男ならやってやれだよ
0234名無しさん@お腹いっぱい。2006/02/12(日) 13:53:13
バーチャルホストのときは
http://vhost.example.net/~user1 より
http://user1.vhost.example.net/ にしちゃう事が多いからとか?
02352262006/02/12(日) 14:22:11
> $HOME/public_html ではなく $HOME の下にあるかどうかのチェックに
> したいということか?

はい、そのとおりです。

/home/user/abc/public_html
/home/user/def/public_html

上の両方でバーチャルホストを使わずに
suexecを使用したいんです。片方だけなら
USERDIR_SUFFIX=abc/public_html
にすればいけたんですが、2つともとなるとSUFFIXを空にするしか
方法がないような気がするんです。
実際suexec.c の ((chdir(USERDIR_SUFFIX)) != 0) を削除して
動作確認したら正常に動作しました。

でも
> そんなことすると、suexec でない CGI の中で、
てなことが発生するわけですね・・・・
何か良い方法はないでしょうか・・・
この問題だけならhttpd.confでCGIを許可するディレクトリを適切に
設定すればなんとかなるような気もしますが。
0236名無しさん@お腹いっぱい。2006/02/12(日) 15:27:05
ていうか232の言ってることって正しいか?
0237名無しさん@お腹いっぱい。2006/02/12(日) 19:29:02
>>236
正しくないね。suexec が実行されたとき、その実行した人の名前は確認してる。
configure するときに、suexec-caller とかそんな感じのあったでしょ?
0238名無しさん@お腹いっぱい。2006/02/12(日) 23:57:42
suexec でない CGI は apache の権限で実行されるんだから、
これはふつうーは --with-suexec-caller で指定するユーザと一致するでしょ。
0239名無しさん@お腹いっぱい。2006/02/13(月) 00:35:41
>>238
(゚Д゚)ハァ?
02402372006/02/13(月) 07:44:09
>>238
あぁ、言いたいことは分かりますた。漏れが勘違いしてた。
そうすると「suexec でない CGI」をなくすために、
suexec を使う/使わないサイトを1台の鯖に混在させない
ようにする必要がありますねぇ。使うならもう全員強制と。
# 普通はそうだと思うけどね。

そんでもって suexec を 4710 apache:apache にでもしておく?
これは気休めみたいなもんだけど。
0241名無しさん@お腹いっぱい。2006/02/13(月) 10:12:45
apache から user にスイッチできないじゃん
0242名無しさん@お腹いっぱい。2006/02/13(月) 10:44:38
suexec は root に setuid されているので、スイッチできちゃいます。
0243名無しさん@お腹いっぱい。2006/02/13(月) 10:57:29
試してみました。
/usr/bin/id を /home/hoge/public_html/id にコピー。
んで、以下の php スクリプトを実行。mod_php なので apache の権限で実行される。

<?php
header('Content-Type: text/plain');
system('/usr/bin/id');
chdir('/home/hoge/public_html');
system('/usr/local/apache2/bin/suexec \~hoge user id');
?>

結果。

uid=80(www) gid=80(www) groups=80(www)
uid=1000(hoge) gid=1000(user) groups=1000(user)
0244名無しさん@お腹いっぱい。2006/02/13(月) 11:45:16
>suexec を 4710 apache:apache

この時点で root じゃないのだが
0245名無しさん@お腹いっぱい。2006/02/13(月) 11:52:55
suexecって入ってたら強制的にCGIをユーザの権限で動作させるものじゃ
ないんだ?
どうやってやるの?
0246名無しさん@お腹いっぱい。2006/02/13(月) 12:02:43
>public_html/fuga.cgi ならば、そういうふうに実行されても
>問題ないように作られてるだろうけど、bin/hoge がそうなってる可能性は皆無だ。

この理論だとバーチャルホストの場合も同じ問題が発生するんじゃね?
0247名無しさん@お腹いっぱい。2006/02/13(月) 12:35:35
>>246
そうだろうね。
バーチャルホストの場合は --with-suexec-docroot で指定したディレクトリ以下の
コマンドしか実行できない。ここのディレクトリ以下に自分の権限で
他人が実行するとヤバいようなものが置いてあるとまずい。
なので、バーチャルホスト用に専用のディレクトリを用意してやって、
その下にある実行ファイルは所有者の権限で実行されてしまっても
問題ないものだけにしないといけない。

で、ためしに suexec-docroot でぐぐってみたら、/home を指定している例が
トップにひっかかった。ヤバい。
0248名無しさん@お腹いっぱい。2006/02/13(月) 13:23:46
>>247
大部分がそれ指定してると思うよ、
実は俺もその一人。

でもpublic_htmlをかませたら問題なくなる部分がちょっと上手く理解できないのだけど。
02492372006/02/13(月) 15:53:17
あぁ、ごめんなさい。また間違えたよ 4710 root:apache ですね。
0250名無しさん@お腹いっぱい。2006/02/13(月) 15:59:12
>>245 conf
0251名無しさん@お腹いっぱい。2006/02/13(月) 23:17:29
suexecを安全に使うための条件は管理者以外にwebサーバ権限で
任意のコマンドを実行できる仕組み(php等)を提供してはいけない。
原理を知っていれば当然のこと。ヘボはサーバ管理するな。
(CGIのphpなら可)
0252名無しさん@お腹いっぱい。2006/02/14(火) 10:43:08
>>251
9割のホスティング会社がひっかかるね
0253名無しさん@お腹いっぱい。2006/02/14(火) 11:05:27
オレがやってたころはsuexecで提供してたので
phpはcgi版のみでやってた。
02542532006/02/14(火) 11:08:11
そういうとこ、多いんじゃないかなあ。
phpをhttpサーバから見えるところに置けば
cgi版であることに気が付かない(先頭の#!/ が無くても動く)

まあ認証とか制限あるからそれでひっかかるかもしれんが。
見えるとこに置くとphp自身のセキュリティホールも気遣わなきゃならんかったが
0255名無しさん@お腹いっぱい。NGNG
Apache 2.3以降はOrder、Allow、Denyは廃止するようだ

http://svn.apache.org/repos/asf/httpd/httpd/trunk/CHANGES

*) Authz: Mark the directives 'Order', 'Allow', 'Deny' and 'Satisfy' as
deprecated and move them into the new module mod_access_compat which
can be loaded to provide backwards compatibility for these directives.
[Brad Nicholes]

*) Authz: Added the new authz providers 'env', 'ip', 'host', 'all' to handle
host-based access control provided by mod_authz_host and invoked
through the 'Require' directive. [Brad Nicholes]
0256名無しさん@お腹いっぱい。2006/02/14(火) 15:58:29
Order Allow,Deny
Allow from example.net
Deny from deny.example.net
みたいなのはどう実現するようにするんだろ?
0257名無しさん@お腹いっぱい。2006/02/14(火) 16:10:01
設定ミスがわかりにくいからシンプルにすんじゃね?
0258名無しさん@お腹いっぱい。2006/02/14(火) 16:21:30
たぶんこうなる
example.net:来んなボケ
example.com:時々来ていい
example.jp:ウフフ?

0259名無しさん@お腹いっぱい。2006/02/14(火) 16:37:22
>>258
いや、Requireを使うみたいにいっとるやんけ。
0260名無しさん@お腹いっぱい。2006/02/14(火) 16:41:54
Requireの構文は
Require entity-name [entity-name] ...
だから、別になんとでもなるか。
0261名無しさん@お腹いっぱい。2006/02/14(火) 23:19:22
>>252
なんで?
0262名無しさん@お腹いっぱい。2006/02/16(木) 03:38:11
phpってCGIで動作させてなかったらパーミッション700じゃ
動かんはずよね?なぜか動くんだが・・・
02632622006/02/16(木) 04:10:42
phpファイルの所有者はユーザにしてあるし、パーミッション700にしてあるし
apacheの起動ユーザはapacheだし、ほわい?
02642622006/02/16(木) 10:54:38
スマン、俺の勘違いだった

こんなエラーだったんで、ちゃんと動作していないみたい。
でも普通Forbiddenエラーがでるもんじゃないの?

Warning: Unknown(/home/hoge/public_html/test.php): failed to open stream: Permission denied in Unknown on line 0

Warning: (null)(): Failed opening '/home/hoge/public_html/test.php' for inclusion (include_path='.:/usr/share/pear') in Unknown on line 0
0265名無しさん@お腹いっぱい。2006/02/16(木) 17:11:15
shtmlファイル以外でもSSIを使えるようにするにはhttpd.confに何を追加すればよいのでしょうか?
0266名無しさん@お腹いっぱい。2006/02/16(木) 17:39:18
>>265
考えてから質問してね。
そして考えてもわからなかったらぐぐってね。
ぐぐってもダメだったら、もう一度考えて、試して、
それでもわからなかったときに質問してね。
0267名無しさん@お腹いっぱい。2006/02/16(木) 17:44:41
>>265
ヒント:
AddType text/x-server-parsed-html .html
Options Includes


>>266
という書き込みもムダだから、答えたくなかったら書き込まないでね。
0268名無しさん@お腹いっぱい。2006/02/16(木) 18:40:28
>AddType text/x-server-parsed-html .html

何年前からタイムスリップしてきた人ですか?
Y2K のパッチ当ては済みましたか?
0269名無しさん@お腹いっぱい。2006/02/16(木) 19:34:26
>>268
今でも使えるんだからいいじゃん。
わかっててそう書いてるんだよ。
後方互換性も大切にな。
0270名無しさん@お腹いっぱい。2006/02/17(金) 04:36:42
Apache1.3 系で SSI を引数付きで実行させたいのですが、上手くいかないので、
相談させてください。

SSI を実行させるディレクトリ設定は下記の通りです。

AllowOverride FileInfo AuthConfig Limit
Options ExecCGI FollowSymLinks Includes

この場合、
<!--#exec cmd="/path/test.cgi"-->
では、上手くいくのですが、
<!--#exec cgi="/path/test.cgi"-->
では、
[an error occurred while processing this directive]
のエラーが表示されてしまいます。

やりたいことは、
test.cgi&mode=1&id=1&coment=text
といった引数を渡したく cmd ではなく cgi として実行させたいのですが、
上記の設定で何か不備不足があるのでしょうか?

よろしくお願いします。
0271名無しさん@お腹いっぱい。2006/02/17(金) 04:45:41
>>266
拡張子を指定してではなく、すべてのファイルに対してできるようにしたいのですが
0272名無しさん@お腹いっぱい。2006/02/17(金) 07:40:20
>>271
だから、.htmlとか.htmとか、使用しているHTMLファイルすべてについて
AddType text/x-server-parsed-html(笑)を書く。

拡張子無視で全くすべてのファイルというわけにはいかない。
何故なら、そんなことをすると .gif .jpg .tar.gz等のバイナリファイルまで
parseされて、中身が壊れる可能性があるから。
0273名無しさん@お腹いっぱい。2006/02/17(金) 07:56:14
>>272
いや、そこは1つでいいけど、横に拡張子をつらつらと。。
0274名無しさん@お腹いっぱい。2006/02/17(金) 07:58:27
>>270
ttp://httpd.apache.org/docs/1.3/mod/mod_include.html
The include virtual element should be used in preference to exec cgi. In particular,
if you need to pass additional arguments to a CGI program, using the query string,
this cannot be done with exec cgi, but can be done with include virtual, as shown here:
<!--#include virtual="/cgi-bin/example.cgi?argument=value" -->
0275名無しさん@お腹いっぱい。2006/02/17(金) 10:16:42
>>270
apacheのerror_log見てみなよ
cgiは、ローカルのパスじゃなくて、URL指定と同じパスだよ
0276名無しさん@お腹いっぱい。2006/02/17(金) 12:38:16
>>274
ありがとうございます。
試してみましたが、状況変わらずでした。
エラーログに
unable to include "/path/test.cgi&mode=1&id=1&coment=text"in parsed file 呼び出し元ファイル
とあることからやはり cmd と同様に test.cgi&mode=1&id=1&coment=text を1つのファイルと見てしまうようです。

>>275
ありがとうございます。
エラーログの報告を忘れてました。申し訳ありません。
ローカルパスの場合は、
File does not exist /path/test.cgi
となっており、
URL 指定の場合は、
invalid CGI ref "http://example.jp/test.cgi&mode=1&id=1&coment=text" in 呼び出し元ファイル
File does not exist /path/test.cgi
になります。

URL の指定間違い等なのか?と考えましたが、コピーペーストでブラウザ直呼び出しすると
問題なく動作します。
(プログラム自体はコメント文をランダム表示させているモノです)

他に何か試せることは無いでしょうか?
0277名無しさん@お腹いっぱい。2006/02/17(金) 12:41:52
>>276
その例で言えば、/path/いらない
0278名無しさん@お腹いっぱい。2006/02/17(金) 12:44:47
って引数つけらんないよ。セキュリティのため。
付けたきゃ #include でやれば
0279名無しさん@お腹いっぱい。2006/02/17(金) 12:47:14
あともひとつ。
引数は ? から始まる、タイプミスとは思うが・・・
02802762006/02/17(金) 12:49:28
>>276
すみません
File does not exist /path/test.cgi
は include virtual の際のエラーログでした。

よく見てみると File does not exist の際にディレクトリが1つ重複しておりました。
public_html
バーチャルルートの場所を勘違いしていたようです。

無事に解決することができました。
ありがとうございます。
0281名無しさん@お腹いっぱい。2006/02/17(金) 12:51:15
>>277
>>278
すみません。もう仰る通りでした。
本当にありがとうございました。

>>279
タイプミスです。本当に申し訳ないです。。。
■ このスレッドは過去ログ倉庫に格納されています