Edit report at https://bugs.php.net/bug.php?id=65557&edit=1
ID: 65557
Comment by: Laurent dot Lyaudet at gmail dot com
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:
Hi,
I thought that maybe we can alter the comportment of #php
You first type your script in the shell
Ctrl+D -> you're still running php; STDIN, STDERR, etc. are initialized for the
script
additional input provided to the script
Ctrl+D -> end of input to the script
I don't know if the shell enables this.
Moreover, it would require two Ctrl+D for users with no intent to give
additional input.
Let me know what you think about it.
Best regards,
Laurent
Previous Comments:
[2013-08-26 10:20:38] johan...@php.net
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.
[2013-08-26 09:09:30] yohg...@php.net
[yohgaki@dev PHP-5.5]$ echo '' > test
#php test
works.
Is is somehow surprising since I would have thought that the only difference
between "php test" and "php " 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 , 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
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