Edit report at https://bugs.php.net/bug.php?id=65557&edit=1

 ID:                 65557
 Updated by:         johan...@php.net
 Reported by:        Laurent dot Lyaudet at gmail dot com
 Summary:            Constants from Core are not defined with inline
                     scripts
 Status:             Verified
 Type:               Bug
 Package:            CGI/CLI related
 Operating System:   Linux
 PHP Version:        5.4 and later
 Block user comment: N
 Private report:     N

 New Comment:

This is done by purpose: We can't easily provide STDIN as that's bound to the 
script input and we either provide all three (STDIN, STDOUT, STERR) or none. 

Maybe this can be improved to rebind STDIN (and then providing all three) after 
the full script has been passed.

Maybe this trinity can be relaxed.

This requires some more analysis of the consequences.


Previous Comments:
------------------------------------------------------------------------
[2013-08-26 09:09:30] yohg...@php.net

[yohgaki@dev PHP-5.5]$ echo '<?php fwrite(STDERR, "stderr\n"); ' | 
./sapi/cli/php

Warning: fwrite() expects parameter 1 to be resource, string given in - on line 
1

------------------------------------------------------------------------
[2013-08-26 09:06:21] Laurent dot Lyaudet at gmail dot com

Additionally I noted that 
#echo '<?php fwrite(STDERR, "stderr\n"); ?>' > test
#php test
works.

Is is somehow surprising since I would have thought that the only difference 
between "php test" and "php <?php fwrite(STDERR, "stderr\n"); ?>" was the input 
stream for php code.

------------------------------------------------------------------------
[2013-08-26 08:49:43] Laurent dot Lyaudet at gmail dot com

Description:
------------
Hi,

I found a bug affecting PHP 5.3.3-7+squeeze15 and PHP 5.4.4-14+deb7u3 (cli) 
(latest debian package for current stable).
The constant STDERR is not defined for inline scripts. 
I mean it isn't defined when you type #php and then you type <?php 
myscriptcontent ?>, Ctrl+D.
But it works if you use php -r 'myscriptcontent'.
I join test script below.

I didn't tested it but I assume it is not specifically STDERR which is impacted.
It is probably the same for all Core constants.

Best regards,
   Laurent Lyaudet

Test script:
---------------
php -r 'fwrite(STDERR, "stderr\n");'

works but

root@wheezyDEVLaurent:~# php
<?php
fwrite(STDERR, "stderr\n");
?>

doesn't.

Expected result:
----------------
stderr

Actual result:
--------------
PHP Notice:  Use of undefined constant STDERR - assumed 'STDERR' in - on line 3
PHP Stack trace:
PHP   1. {main}() -:0

Notice: Use of undefined constant STDERR - assumed 'STDERR' in - on line 3

Call Stack:
   10.9477     215280   1. {main}() -:0

PHP Warning:  fwrite() expects parameter 1 to be resource, string given in - on 
line 3
PHP Stack trace:
PHP   1. {main}() -:0
PHP   2. fwrite() -:3

Warning: fwrite() expects parameter 1 to be resource, string given in - on line 
3

Call Stack:
   10.9477     215280   1. {main}() -:0
   10.9479     216048   2. fwrite() -:3




------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=65557&edit=1

Reply via email to