PHP stdout没有写

时间:2016-11-23 21:17:02

标签: php apache stdout

我正在编写一个在Apache httpd Web服务器上运行的PHP脚本(不由我管理)。在函数中,变量$outfile作为函数参数给出,函数的最开头是:

if (isset($outfile))
    $fh = fopen($outfile, 'wb');
else
    $fh = fopen('php://stdout', 'w');
echo 'Hello, ';
fwrite($fh, 'World');

我用$outfile = NULL调用此函数,因此$fh应该指向stdout。我可以通过放弃条件来进一步剥离这个:

$fh = fopen('php://stdout', 'w');
echo 'Hello, ';
fwrite($fh, 'world');

关键是,它只输出

Hello,

而不是我期待的:

Hello, world!

我怎么能绕过这个问题?

1 个答案:

答案 0 :(得分:2)

使用php://output代替php://stdout。正如documentation所说

  

php://output是一个只写流,允许您以与printecho相同的方式写入输出缓冲区机制。

php://stdout直接写入stdout文件描述符,因此无法与echo的缓冲输出正确同步。