[PHP-users 3102] Re: cgi版PHP4 でInvalid URI

しのはら よしたけ php-users@php.gr.jp
Wed, 24 Oct 2001 19:14:07 +0900 (JST)


よしたけ@YYNです。

Debian@potatoでPHP-4.0.6のいんちきパッケージをつくって運用してます。

> PHP4のCGI版をApacheに組み込もうと四苦八苦しています。

なぜにCGI版なの?と思うのですが、それはそれなりに理由があるのでしょう(^^;
#セキュリティですかね?setuidで実行されたいのかな?
#でも、そのレベルであれば、素直にDSO版使ったほうが安全のような気が・・・
CGI版をApacheと連携させず、DBにアクセスするためのスクリプトとしてロー
カルで使用する事であれば、おいらも良くやってます。

> 環境は以下の通りです。
>     OS:     Debian woody
>     Apache: 1.3.9-14
>     PHP:    4.0.3pl1-0potato1.1

これまた、なぜにwoodyなのにPHPはpotato版なんでしょう?
各種ライブラリ等の依存関係でインストールすらままらならないと思うのです
が(^^;
きちんとしたwoodyじゃないのかな?

> mod_actions.soは、<mod_path>で指定されるディレクトリにあります。
> また、/cgi-bin/ で指定されるディレクトリにはphp4の実プログラムが
> あります。

php4の実プログラムとはphp自体でしょうか?それともスクリプトでしょう
か?
一度 http://download.php.net/manual/ja/security.php を読まれてみ
てはいかがでしょう。
php自体が/cgi-bin/に入っているのでしたらば、セキュリティ上問題ある
気がします。>識者の方フォローして頂けませんか?(^^;
--enable-force-cgi-redirectが指定されていれば問題ないでしょうか?

> この状態でindex.phpというファイルを作り、Webブラウザから参照する
> と、「Invalid URI in request GET /index.php HTTP/1.1」というエラー
> になってしまいます。

ブラウザからのリクエストは?
http://<hogehoge>/index.php 
でしょうか?
もし、そうであればLocationの設定で/がCGI実行できるようになっていな
いのかと思われます。

> シェルプロンプト上で php4 index.php は正しく実行されます。

そもそも、上のURLのマニュアルにもかかれていますが、CGI版として使う
のであれば、スクリプトとして#!/usr/bin/phpの一行が先頭に必要だと思
います。
#というか、その運用が一番安全でしょう。

> どこに問題があるのでしょう。

ちょっときついこと言ってしまうと、仕組みをきちんと理解されていない
のにCGI版を無理して使うという所に問題がある気がします(^^;
一般的な使い方ではないという意味でです。CGI版ではsetuidで実行できる
という事以外はApacheモジュール版より動作速度うんぬんでも劣ってると
思います。(ほかにもあるかもしれませんが・・・)
また、一般的ではないのでハウツーページも少ないと思います。
まずは普通にDSO版で行ってみてはいかがでしょうか?

------------------------
YYN partnership company
Yoshitake Shinohara
yoshi@yyn.jp