[Momonga-devel.ja:01194] Re: PHPバイナリの処方


大垣です。

kourin wrote:
> こ〜りんです。
> phpについては無知ですが、ちょっと確認させてください。
> 
> On Tue, 07 Jan 2003 10:26:09 +0900
> Yasuo Ohgaki <yohgaki@xxxxxxxxxx> wrote:
> 
> 
>>大垣です。
>>
>>まずは前置きから。
>>PHP4.3.0からphpという名前のバイナリが二つできます。
>>私はこの仕様には大反対なのですが、なってしまった物は仕方ありませ
>>ん... 一つはCGI用のバイナリ、もう一つはコマンドライン用のバイナ
>>リ(CLI)です。CLIはPHP4.3.0までは、EXPERIMENTALでしたが、
>>PHP4.3.0からは一応STABLEになっています。
> 

SNIP

>>私としては、上記のような問題を考えて、CLIはphp, CGIはphp-cgi
>>をして/usr/binにインストールするようにしたい、と考えています。
>>
>>ご意見がある方は、コメント頂ければ幸いです。
> 
> 
> とりあえず、名前を別々のものにしよう、というのは賛成です。
> (gimp-1.3 やw3m-img の例もありますし。)
> 
> CGI が既存のもの、CLI が新規なものならば、普通は旧版との互換性から
> php とphp-cli にすることが妥当かと思いますが、そうではなく、
> php-cgi とphp にしよう、というのは大垣さんやDaultさんの発言からすると、
> 今後はCLI のほうが主に使われるだろうから、という理由でしょうか?

本来はそうあるべきと思います。が、phpは普通スクリプト用、
php-cgiはCGI用になってほしい、という希望もあります。

CGI版をPerlやRubyの様に通常のスクリプト言語として使うと
なると、致命的な欠陥があります。

普通はWeb環境でスクリプトを安全に実行する為に、CGI用の設
定ファイルは通常のスクリプトのように利用するには不適当な設
定がされている場合が多いです。

たとえば、ファイルを開けるトップレベルのディレクトリが設定
されていたり、ファイルを開く為にはUID/GIDが同じでなければ
ならない、出力をバッファリングする、関数を使えなくする(exec,
system等)の設定がされている場合が普通です。

#!/usr/bin/php
がCGIバイナリを参照している場合、上記のようなWeb環境用の設
定は非常に不便です。(というより使えない...
更に、CGI版にはCLI版にある-n(php.iniを読み込まない)オプ
ションもありません。

また、普通の人でPHPを知らない方はphpとphp-cliがあると、
phpの方で動作する非Web用スクリプトを書いてしまう事が多くな
ると思います。

# 私ならPHPを知らなくて、どうしてもPHPを使った非Web用
# スクリプトを書かなければならない場合、phpと名前のつい
# ているバイナリを使います。多分。

また、CGIバイナリをWeb用に設定するのはシステム管理者なので、
CGIバイナリの名称が変ったくらいで普通は困らない(はず)と考え
ています。

このような理由からphpはCLI、php-cgiはCGIにした方が長期的に
はデメリットよりメリットの方が大きいと考えています。

問題は他のパッケージャーがどうするかです...
php-cli派が多いようであれば、/usr/bin/phpは/usr/bin/php-cli
へのリンクにします。

/usr/bin/phpがCGIなのか、CLIなのかシステムによって違う、
という事は避けたかったのですが、多分無理ですね...

php-cliするにしろ、php-cgiにするにしろ、PHPプロジェクトか
らはっきりユーザーに解るようにリリースすべきだったと思いますが、
「理解に苦しむ理由」が理由になるのがphp-devなので...
個人的には同じ名前のバイナリ名でしかも、使用上に重大な問題がある

# CGIとCLIは内部的には、ほとんど同じだったのに別々にしたの
# が問題の始まり... php -x = CLIモード等だったら良かった
# と思います。
# (これも、一応昔に議論になってました。あまり興味がなかっ
#  たので、内容を覚えていません)

--
Yasuo Ohgaki