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

CLI版のPHPで

fwrite(STDERR, $error_message);

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

fwrite(STDOUT, $error_message);

echo $error_message;

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

PHP5.1.6

This entry was posted in いじる. Bookmark the permalink. Both comments and trackbacks are currently closed.

3 Comments

  1. hiroaki
    Posted 2007/02/22 at 10:57 pm | Permalink

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

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

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

  2. Posted 2007/02/23 at 8:26 am | Permalink

    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. hiroaki
    Posted 2007/02/23 at 8:51 pm | Permalink

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

Page optimized by WP Minify WordPress Plugin