- ベストアンサー
ローカルサーバーでの動作確認について
- CGI超初心者がローカルサーバーでの動作確認に苦戦しています。
- APACHEの設定でCGI/SSIがうまく表示されずに困っています。
- 詳しい情報を提供いただけると助かります。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> でもこれはSSIではないんですね? Server Side Include といういみでは、cmd でも cgiでもSSIとして動作しているということですよ。 cmd/cgiのどちらを利用するかはあまり明確な切り分けは無いと思います。強いて言うなら、cmd はコマンドやシェルスクリプト(バッチファイル?)の実行結果を表示するときに、cgiはプログラムの実行結果を表示するとき、というぐらじゃないでしょうか。 今回の test.plを自分でどちらに意味づけするかでcmd/cgiどちらを使うかを決めるだけだと思います。 私はここで SSIの使い方を勉強しました http://www.hotwired.co.jp/webmonkey/2000/04/index1a.html http://www.hotwired.co.jp/webmonkey/2000/05/index1a.html #include file/virtualの他にも#if/#else/#endifは結構便利に使えました。 #今はほとんどPHPを使っているのでSSIは使わなくなりましたが..
その他の回答 (4)
- feininger
- ベストアンサー率41% (74/180)
> 単純に <!--#exec cmd="dir" --> としても動かなかったのですから、Apache2(最新版2.0.48)ではバグ(もしくは仕様??)で動作しないんだと思います。 もしかするとexecはセキュリティ上あまりよろしくないので仕様が変更されたのかな? 参考書が古かったりすると、動かないことがあるかもしれませんね。 代替でこれ↓はどうですか? <!--#include virtual="/cgi-bin/test.pl"--> あと、念のために確認しますが、 1) htdocsのディレクティブに Includes もしくは IncludesNOEXEC を追加していますか? 2) AddTypeで .shtml を有効にしていますか? AddType text/html .shtml AddOutputFilter INCLUDES .shtml たしかデフォルトでは *.pl はCGIとして動作しなかった記憶があるのですが、そこもちゃんと設定済みですか? (*.cgiならデフォルト状態でも動作したはず)
補足
回答ありがとうございます。 代替の記述でトライしてみましたがやっぱりだめでした。 ちなみに 1)のhtdocsにIncludesの記述は追加してます. 2)3行目のAddOutputFilter~の記述の代わりにAddHandler~の設定があってそれは有効にしてます. ActivePerl5でapacheは1.3.29です. 全くどうしたものか… やっぱりバグですか? ただ参考書で使用してるapacheは1.3.27なのでそんなに仕様が変わってるとは思えないんですが。
- yatokesa
- ベストアンサー率40% (201/496)
#2の補足です。 > print "Content-type: text/html\n\n"; これは cgiとして動作させるときのものでした。cmdとして実行させる場合はいらない行です。 > exec cmdでうまく行かない場合 Win32では、この exec cmd の実装バグがいろいろあるようです。1.3系でも動作する場合と動作しない場合があるようです。2.0は少なくとも私の環境では動きませんでした。 単純に <!--#exec cmd="dir" --> としても動かなかったのですから、Apache2(最新版2.0.48)ではバグ(もしくは仕様??)で動作しないんだと思います。
- 参考URL:
- http://www.google.com/search?q=exec+cmd+apache+win&hl=ja&lr=lang_ja&ie=UTF-8&oe=utf-8&start=10&sa=N
補足
回答ありがとうございます. 下の方法でやってみたらチャンと表示されました。 でもこれはSSIではないんですね? apacheは1.3.29なんですけどやっぱりバグなんでしょうか…
- yatokesa
- ベストアンサー率40% (201/496)
まず、test.pl の方で、print "hello!";を実行する前に print "Content-type: text/html\n\n"; を入れてください。htmlを出力する時のおまじないです。 あと、ちょっと理由がわからなかったのですが、exec cmdでうまく行かない場合 exec cgiにしてみてください。 exec cmdで試したのですが、私の環境 Win2k Apache2 Perl5 では動作しなかったので...。
- feininger
- ベストアンサー率41% (74/180)
Apacheであれば logs というディレクトリがあるかと思いますが、 そこの error.log になにかエラーが記録されていませんか?
補足
回答ありがとうございます. 「logs」ディレクトリありますが ごめんなさい、これってエディターで開いていいんでしょうか…
お礼
回答ありがとうございます。 なんとか動作確認できました. もっと勉強します.