【发布时间】:2011-10-25 01:38:28
【问题描述】:
echo 是否等于 fputs( STDOUT ),还是 echo 写入不同的流?我已经使用 PHP 有一段时间了,但我不太清楚在较低级别上实际发生了什么。
【问题讨论】:
echo 是否等于 fputs( STDOUT ),还是 echo 写入不同的流?我已经使用 PHP 有一段时间了,但我不太清楚在较低级别上实际发生了什么。
【问题讨论】:
根据PHP's manual page on wrappers,答案是否定的。
php://输出
php://output 是一个只写流,允许您写入 输出缓冲区机制与 print() 和 echo() 相同。
print 和echo 写入php://output 流,而fputs(STDOUT) 写入php://stdout。
我做了一个小测试:
<?php
$output = fopen('php://output', 'w');
ob_start();
echo "regular echo\n";
fwrite(STDOUT, "writing to stdout directly\n");
fwrite($output, "writing to php://output directly\n");
$ob_contents = ob_get_clean();
print "ob_contents: $ob_contents\n";
此脚本输出(在 PHP 5.2.13,windows 上测试):
writing to stdout directly
ob_contents: regular echo
writing to php://output directly
即写入STDOUT 直接绕过ob 处理程序。
【讨论】:
C:\xampp\apache\logs\error.log,但 STDOUT 似乎“丢失”了。