2011-08-11 9 views
26

echofputs(STDOUT)に等しいか、echoは別のストリームに書き込みますか?私はPHPをしばらく使用しましたが、実際には下位レベルで何が起こっているのかよくわかりません。echo equal fputs(STDout)ですか?

答えて

39

PHP's manual page on wrappersによると、答えはいいえ

PHPです://出力

は、PHP://出力はあなたが の出力バッファへの書き込みを可能にする書き込み専用のストリームでありますprint()とecho()と同じ方法で呼び出されます。 fputs(STDOUT)一方

printphp://outputストリームへechoの書き込みは、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 

すなわち直接OBのハンドラをバイパスSTDOUTへの書き込み

は、私は少しテストをしました。

+0

STDOUTの出力が格納される通常のデフォルトの場所はどこですか?例えば。 STDERRは 'C:\ xampp \ apache \ logs \ error.log'に書き込みますが、STDOUTは"見つからない "ようです。 – Pacerier