Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

does echo equal fputs( STDout )?

Tags:

php

stream

stdout

Does echo equal fputs( STDOUT ), or does echo write to a different stream? I've used PHP for a while now, but I don't know very well what's actually happening on a lower level.

like image 355
bigblind Avatar asked Aug 11 '11 14:08

bigblind


1 Answers

According to PHP's manual page on wrappers, the answer is No.

php://output

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().

print and echo write to php://output stream, whereas fputs(STDOUT) writes to php://stdout.

I did a little test:

<?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"; 

This script outputs (tested on PHP 5.2.13, windows):

writing to stdout directly ob_contents: regular echo writing to php://output directly 

i.e. writing to STDOUT directly bypasses ob handlers.

like image 143
galymzhan Avatar answered Sep 23 '22 15:09

galymzhan