としかずさん、
しばらく前の PerlIS.dll は PHPのISAPI と同様、PATH_TRANSLATED にスクリプトのローカルパスをセットする必要がありました。 それがもともと Microsoft の ISAPI の仕様ですが、あまりよい仕様とは思えません。
Perl の方は必要なくなりましたが、PHPのISAPI ではまだ忠実な実装のままのようです。
いずれにしても perl.exe と php.exe も使えるようにしておいた方がよいと思います。何かエラーが起きた時に原因を調べやすいはずですから。
中田さん他、色々な助言ありがとうございます。
「PATH_TRANSLATED を使う」にチェック、で動作しました。
PerlもPHPもISAPIという同一のインタフェースを備えたDLLなのだから、HTTPD側の設定は
同一で良いはずだ、という勝手な思い込みをしていました。
としかずさん、
http://localhost/test.php がちゃんと動かないのにいろいろやってもだめでしょう。
http://homepage1.nifty.com/yito/anhttpd/faq/php.html
を参考にしてください。
Lunarchan さんが言うとおりで、「PATH_TRANSLATED を使う」にチェックを入れてないのだろうと思います。
>としかずさん
オプション−一般 のところの実行プログラム周りの
設定を見直してください。
拡張子.phtml .php .php3
実行プログラム:(略)
一般パスでも実行する
PATH_TRANSLATEDを使う のみにcheck。
これでいけるかとおもいます。
#!の行を調べさせないように。
…的確なResになるかどうかは解りませんがご確認を。
あと、蛇足ですが、できればphpはexe版をお勧めします…。
さらに多少調べたところ、
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 の不具合…なのでしょうか?
初めて質問させていただきます。
現在 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 のソースを表示してしまう(セキュリティ的にマズイのでは?)
となってしまいます。
あまりネットワークの事は良く理解していないで、単純なミスかもしれませんが、
もし問題点が判りましたら教えていただきたく思います。