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

[email protected] ("Jan G.B.")
Newsgroups php.general
Message-ID <[email protected]>
2010/3/23 Marten Lehmann <[email protected]>

> 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.