AN HTTPD ゲストブック/コメント集(2003年11月21日12:25)


中田昭雄 nakata@st.rim.or.jp 2003/11/23 20:16

としかずさん、
しばらく前の PerlIS.dll は PHPのISAPI と同様、PATH_TRANSLATED にスクリプトのローカルパスをセットする必要がありました。 それがもともと Microsoft の ISAPI の仕様ですが、あまりよい仕様とは思えません。
Perl の方は必要なくなりましたが、PHPのISAPI ではまだ忠実な実装のままのようです。

いずれにしても perl.exe と php.exe も使えるようにしておいた方がよいと思います。何かエラーが起きた時に原因を調べやすいはずですから。


としかず kastalia@csc.jp 2003/11/23 09:00

中田さん他、色々な助言ありがとうございます。
「PATH_TRANSLATED を使う」にチェック、で動作しました。
PerlもPHPもISAPIという同一のインタフェースを備えたDLLなのだから、HTTPD側の設定は
同一で良いはずだ、という勝手な思い込みをしていました。


中田昭雄 nakata@st.rim.or.jp 2003/11/21 21:05

としかずさん、
http://localhost/test.php がちゃんと動かないのにいろいろやってもだめでしょう。

http://homepage1.nifty.com/yito/anhttpd/faq/php.html
を参考にしてください。
Lunarchan さんが言うとおりで、「PATH_TRANSLATED を使う」にチェックを入れてないのだろうと思います。


Lunarchan pdt5-hys@asahi-net.or.jp 2003/11/21 18:13

>としかずさん
オプション−一般 のところの実行プログラム周りの
設定を見直してください。

 拡張子.phtml .php .php3 
 実行プログラム:(略)

 一般パスでも実行する
 PATH_TRANSLATEDを使う のみにcheck。

これでいけるかとおもいます。
#!の行を調べさせないように。

…的確なResになるかどうかは解りませんがご確認を。
あと、蛇足ですが、できればphpはexe版をお勧めします…。


としかず kastalia@csc.jp 2003/11/21 12:41

さらに多少調べたところ、
dummy.pl というファイルにPHPのソースを書き、
http://localhost/test.php/dummy.pl
とアクセスすると、dummy.pl がPHPにより解釈された結果が表示されます。
どうも AN HTTPD が、 test.php の部分で php4isapi.dll を呼び出すと判断し、
dll には C:\public_html\dummy.pl を読み込むように指示しているように思われます。

これは AN HTTPD の不具合…なのでしょうか?


としかず kastalia@csc.jp 2003/11/21 12:25

初めて質問させていただきます。
現在 W2k-SP4, AN HTTPD 1.42k, PHP4.3.4 ISAPI版, ActivePerl ISAPI版 という環境を
試行しています。
ドキュメントルートは C:\public_html としています。

ここで、C:\public_html に test.pl, test.php というファイルを置いています。
中身は Hello, World! 程度のものです。

試験的にこのようにしていますが、なかなか思い通りに動作しません。
試行錯誤の結果の例をあげますと、

http://localhost/test.pl -> 正常に表示
http://localhost/test.php
 -> Warning: Unknown(C:\public_html): failed to open stream: Permission
  denied in Unknown on line 0 とPHPがエラー出力
  (ディレクトリを読みに行っている?)
http://localhost/test.php/test.php -> test.php を正常に表示
http://localhost/test.php/test.pl
 -> test.pl のソースを表示してしまう(セキュリティ的にマズイのでは?)

となってしまいます。
あまりネットワークの事は良く理解していないで、単純なミスかもしれませんが、
もし問題点が判りましたら教えていただきたく思います。