|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Using the PHP CLI executable, if the script to run is fed to PHP via
standard input, then it seems PHP does not define any of the standard stream constants STDIN, STDOUT, and STDERR. While I can understand not defining STDIN, since that's where the script is, I think not defining STDOUT and STDERR is a bug. Any comments before I open a bug report? Confirmation? --- Test script 'nostd.php' --- <?php fwrite(STDOUT, "Hello, standard output\n"); fwrite(STDERR, "Hello, standard error\n"); ------------------------------- Run: $ php nostd.php Works as expected. Run: $ php < nostd.php Produces NOTICE and Warning messages about STDOUT and STDERR not defined. |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
On Nov 12, 4:46 pm, ljb <lba...@pobox.com.delete.th.is> wrote:
> > Using the PHP CLI executable, if the script to run is fed > to PHP via standard input, then it seems PHP does not define > any of the standard stream constants STDIN, STDOUT, and STDERR. > While I can understand not defining STDIN, since that's where > the script is, I think not defining STDOUT and STDERR is a bug. > Any comments before I open a bug report? Are you sure you're using CLI interpreter, not CGI one? What does php_sapi_name() return? Cheers, NC |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
ljb wrote:
> Using the PHP CLI executable, if the script to run is fed to PHP via > standard input, then it seems PHP does not define any of the standard > stream constants STDIN, STDOUT, and STDERR. While I can understand not > defining STDIN, since that's where the script is, I think not defining > STDOUT and STDERR is a bug. Any comments before I open a bug report? > Confirmation? > > --- Test script 'nostd.php' --- > <?php > fwrite(STDOUT, "Hello, standard output\n"); > fwrite(STDERR, "Hello, standard error\n"); > ------------------------------- > Run: $ php nostd.php > Works as expected. > Run: $ php < nostd.php > Produces NOTICE and Warning messages about STDOUT and STDERR not defined. > I've never tried it, but I can see why it could work that way. When you do "php nostd.php", stdin is fed into the script, and stdout and stderr would be, also. But, as you noticed, when you try to use "php < nostd.php", stdin is redirected. So PHP probably doesn't open stdout or stderr to the script, either. You can try to submit it as a bug, but I'll give you good odds it will be classified as "working as designed". -- ================== Remove the "x" from my email address Jerry Stuckle JDS Computer Training Corp. jstucklex@attglobal.net ================== |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
nc@iname.com wrote:
> On Nov 12, 4:46 pm, ljb <lba...@pobox.com.delete.th.is> wrote: >> >> Using the PHP CLI executable, if the script to run is fed >> to PHP via standard input, then it seems PHP does not define >> any of the standard stream constants STDIN, STDOUT, and STDERR. >> While I can understand not defining STDIN, since that's where >> the script is, I think not defining STDOUT and STDERR is a bug. >> Any comments before I open a bug report? > > Are you sure you're using CLI interpreter, not CGI one? What does > php_sapi_name() return? Yes, thanks, I'm using CLI. I only have Apache SAPI and CLI built, no CGI, and php_sapi_name() returns 'cli'. |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
jstucklex@attglobal.net wrote:
> ljb wrote: >> Using the PHP CLI executable, if the script to run is fed to PHP via >> standard input, then it seems PHP does not define any of the standard >> stream constants STDIN, STDOUT, and STDERR. While I can understand not >> defining STDIN, since that's where the script is, I think not defining >> STDOUT and STDERR is a bug. Any comments before I open a bug report? >> Confirmation? >> >> --- Test script 'nostd.php' --- >> <?php >> fwrite(STDOUT, "Hello, standard output\n"); >> fwrite(STDERR, "Hello, standard error\n"); >> ------------------------------- >> Run: $ php nostd.php >> Works as expected. >> Run: $ php < nostd.php >> Produces NOTICE and Warning messages about STDOUT and STDERR not defined. >> > > I've never tried it, but I can see why it could work that way. > > When you do "php nostd.php", stdin is fed into the script, and stdout > and stderr would be, also. But, as you noticed, when you try to use > "php < nostd.php", stdin is redirected. So PHP probably doesn't open > stdout or stderr to the script, either. > > You can try to submit it as a bug, but I'll give you good odds it will > be classified as "working as designed". Maybe I'll take that bet. I looked at the PHP source (php_cli.c function cli_register_file_handles()), and it seems to me that it is written such that if any of the 3 streams cannot be opened, then none are opened. I can't see why this is necessary, but you could be right - it might be "as designed". I would have opened the bug already, but they just release 5.2.5 and once they put out a new release they don't take bug reports for the 'ancient' releases like 5.2.4. |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
lbayuk@pobox.com.nospam wrote:
> jstucklex@attglobal.net wrote: >>... >> You can try to submit it as a bug, but I'll give you good odds it will >> be classified as "working as designed". > > Maybe I'll take that bet.... but you could be right - it might be "as > designed". We're both wrong, but you are closer! Bug type was changed from CGI/CLI problem to Documentation problem with this comment: >>> I once tried to fix that but it just lead to crazy problems, therefore >>> making this a documentation issue. I like that answer. I'm going to use it myself as soon as I can. |
|
![]() |
| Outils de la discussion | |
|
|