[PHP-dev 1264] Re: PHP-4.1.3から、cli版で作成してPHPコマンドで、php.iniを読み込めない

Tadashi Jokagi ml @ elf.no-ip.org
2006年 5月 28日 (日) 22:38:21 JST


      上鍵です.こんにちは.

Tomoyuki Asakawaさんの<8B74D091-1A9D-4C99-AA82-E7011AD6814D @ asakawa.ne.jp>から
>バグというものは、使用しているライブラリやツールのバグであって、 
>自分が書いた部分の責任じゃないとしても、最終的には使用した側の責 
>任です。

      それでは再度別の表現をしましょう.Linux(glibc)の仕様に準拠した
    仕様だと思われます.

>もちろん、-cの後ろに空白をいれてはイケナイと、明記すればそ 
>れは仕様になるでしょう。

      通常 getopt の optstring で「C:」と指定した場合,

    ・argv[n][1] からの文字列を引数の値にする
    ・argv[n+1][0] からの文字列を引数の値にする

    というのが一般的な挙動だと思います.つまり,

$ php '-c /path/to/php.ini'

    は「 /path/to/php.ini」が指定されたと判断するのが当然の処理です.
    これは他の実装でも同様だと思います.

>というか、UNIX上では、もしかすると、オプションとパラメータ 
>の間に空白を入れないのが常識だったでしょうか?
>(ccのオプションがそうじゃないから違うよね)

    前述の通り,gcc のオプションはそのようになります.

>今回のPHPに限らず。
>オプションの書式で空白を許すコマンドと許さないコマンドがあるのは 
>なぜだろうと
>おもっていました、getopt使ってないのだろうと思っていましたが
>そんな単純ではなかったのですね。

    getopt を使用しても同様の処理になるはずです.

>> ただ、以前のバージョンではなぜ動作していたのかという
>> 疑問が残りますが・・・
>
>そうなのです。同じ環境(物理的にもOSも)で、
>5.1.2->5.2.0-devまで、コンパイルしたばあい
>getoptは同じものなはずなので
>挙動パターンが3種類あるというのはやはりおかしいです。

    別の挙動をした原因はおそらく

    ・Linux と別の shebang の挙動をする処理系だった
    ・PHP 内の getopt のバグ

    だと思われます.また,上鍵の環境では PHP 5.1.2 も 5.1.4 も同じ結
    果が出ています(書いたと思うのですが)

#下記オフトピ

Tomoyuki Asakawaさんの<23111DF9-56E0-4A51-8470-32FC1FED50F0 @ asakawa.ne.jp>から
>mb_stringの関係で、
>output_handler = mb_output_handler
>を指定しています。

    php -doutput_handler=mb_output_handler でいいのでは;)

-- 
----.----1----.----2----.----3----.----4----.----5----.----6----.----7
Tadashi Jokagi/Setagaya city mailto:elf @ elf.no-ip.org
YokukitanaII http://elf.no-ip.org/
Yokukitablog http://blog.poyo.jp/
Yokukitawiki http://wiki.poyo.jp/


PHP-dev メーリングリストの案内