我正在编写一个在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!
我怎么能绕过这个问题?
答案 0 :(得分:2)
使用php://output
代替php://stdout
。正如documentation所说
php://output
是一个只写流,允许您以与echo
相同的方式写入输出缓冲区机制。
php://stdout
直接写入stdout
文件描述符,因此无法与echo
的缓冲输出正确同步。