CLIなPHPでSTDERRはob_startで制御できない?

Feb 22 2007

CLI版のPHPで

fwrite(STDERR, $error_message);

のようなコードを書いていて、出力制御したくなったもののob_start()では標準出力しか制御できないらしい。。うーん。
標準出力、といっても

fwrite(STDOUT, $error_message);

echo $error_message;

は別物らしく、前者はSTDERRと同様に制御できなかったのでfwriteがダメなのかな?

PHP5.1.6

3 responses so far

  1. CLIは、Common Language Infrastructureかと思いましたが、Command Line Interfaceの方みたいですね。

    PHPの場合は違うのかもしれませんが、C言語ではfwriteよりfprintfを利用するイメージの方が自分には強いです。いかがでしょうか?

    よくわからないですが…どうなのでしょう。

  2. PHPにfprintfはない、と思いきやPHP5から追加されたんですね。
    http://jp2.php.net/manual/en/function.fprintf.php

    ob_startの動作はfwriteと同じでした。

    Cで標準出力にfwriteしたことはないです。printfかfprintfですね。

    #include <stdio.h>
    
    int main(void)
    {
        fwrite("hoge\\n", sizeof(char), 5, stdout);
        return 0;
    }

    fwriteでも動くみたいですけど 笑
    gcc 4.1.1

  3. fwriteも出力OKなのですね。知らなかった。

Leave a Reply