PHP 未写入标准输出
PHP stdout not written
我正在 Apache httpd 网络服务器(不是由我管理)上编写 PHP 脚本 运行。在函数中,变量$outfile
作为函数参数给出,函数的开头是这样的:
if (isset($outfile))
$fh = fopen($outfile, 'wb');
else
$fh = fopen('php://stdout', 'w');
echo 'Hello, ';
fwrite($fh, 'World');
我用 $outfile = NULL
调用这个函数,所以 $fh
应该指向标准输出。我可以通过删除条件进一步简化它:
$fh = fopen('php://stdout', 'w');
echo 'Hello, ';
fwrite($fh, 'world');
重点是,它只输出
Hello,
而不是我所期待的:
Hello, world!
怎么会出现这个问题,我该如何规避这个问题?
使用 php://output
而不是 php://stdout
。正如 documentation 所说
php://output
is a write-only stream that allows you to write to the output buffer mechanism in the same way as print
and echo
.
php://stdout
直接写入 stdout
文件描述符,因此它不会与 echo
.
的缓冲输出正确同步
我正在 Apache httpd 网络服务器(不是由我管理)上编写 PHP 脚本 运行。在函数中,变量$outfile
作为函数参数给出,函数的开头是这样的:
if (isset($outfile))
$fh = fopen($outfile, 'wb');
else
$fh = fopen('php://stdout', 'w');
echo 'Hello, ';
fwrite($fh, 'World');
我用 $outfile = NULL
调用这个函数,所以 $fh
应该指向标准输出。我可以通过删除条件进一步简化它:
$fh = fopen('php://stdout', 'w');
echo 'Hello, ';
fwrite($fh, 'world');
重点是,它只输出
Hello,
而不是我所期待的:
Hello, world!
怎么会出现这个问题,我该如何规避这个问题?
使用 php://output
而不是 php://stdout
。正如 documentation 所说
php://output
is a write-only stream that allows you to write to the output buffer mechanism in the same way asecho
.
php://stdout
直接写入 stdout
文件描述符,因此它不会与 echo
.