1

次の C++ 関数があります。

void foo() {
    std::cout << "bar" << std::endl;
}

これをSWIG経由でPHPに移植しています。すべてが正常にコンパイルされ、拡張機能が適切にロードされます。PHPから呼び出すことはできますが、コマンド ラインから PHP スクリプトを実行した場合にfoo()のみ出力が表示されます。bar

$ php script.php
bar

ブラウザにスクリプトをロードしても、何も表示されません。barこの場合、なぜ表示されないのですか?

4

1 に答える 1

1

stdout に直接出力することはできません。もちろん、これは CLI SAPI を使用している場合にのみ機能します。php_printfまたはこれらのいずれかを使用します。

//Calls php_output_write
#define PHPWRITE(str, str_len)
//Calls php_output_write_unbuffered
#define PHPWRITE_H(str, str_len)
//Idem:
#define PUTC(c)
#define PUTC_H(c)
#define PUTS(str)
#define PUTS_H(str)
int php_write(void *buf, uint size TSRMLS_DC);
int php_printf(const char *format, ...);
int php_output_write(const char *str, size_t len TSRMLS_DC);
int php_output_write_unbuffered(const char *str, size_t len TSRMLS_DC);
//see the rest of main/output.c
于 2010-07-27T00:39:07.380 に答える