Re: constants STDOUT, STDERR, STDIN not working in 5.2.x?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2010/3/23 Marten Lehmann <lehmann@xxxxxx>

> Hello,
>
> I found different code examples like this, which use the file handle STDERR
> just like this:
>
> <?php
> fwrite(STDERR, "hello\n");
> ?>
>
> Also, the PHP documentation of input/output streams (
> http://php.net/manual/de/wrappers.php.php) says:
>
> "It is recommended that you simply use the constants STDIN, STDOUT  and
> STDERR instead of manually opening streams using these wrappers."
>
> I don't want to use the "php://stderr" wrapper, because this just creates a
> duplicate of the original STDERR handler and if I'm closing "php://stderr",
> the original STDERR still would exist.
>
> When I'm using this code, I only get:
>
> <b>Notice</b>:  Use of undefined constant STDERR - assumed 'STDERR' in
> <b>/test.php</b> on line <b>4</b><br />
> <br />
> <b>Warning</b>:  fwrite(): supplied argument is not a valid stream resource
> in <b>/test.php</b> on line <b>4</b><br />
>
> How can I access the original STDERR handle? The constant should be there,
> but does not exist.
>
> regards
> Marten
>
>
Hi,

I can reproduce it with some differences. Check this out:

 $ php --version
PHP 5.2.10-2ubuntu6.4 with Suhosin-Patch 0.9.7 (cli) (built: Jan  6 2010
22:56:44)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies

$ php 1>/dev/null             # note that the PHP error messages are
displayed on STDOUT - I don't show them with "1>/dev/null"
<?
$x = fopen('php://stderr', 'r'); fwrite($x, "test\n"); fclose($x);
$x = fopen(STDERR, 'r'); fwrite($x, "test2\n"); fclose($x); ?>
------------
<?
fwrite(STDERR, "test3\n");
fwrite ('php://stderr', "test4");
?>
-----------

Result:

test


--------

So my assumption is, that the quoted recommendation is outdated / wrong.

Regards


PS: PHP reports this when giving the constant STDERR:
  Warning: fopen(STDERR): failed to open stream: No such file or directory
  Warning: fwrite(): supplied argument is not a valid stream resource

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux