Bug #64882 [Opn->Ver]: 'Could not open input file' error message goes to STDOUT

From: Date: Tue, 21 Jun 2016 11:29:20 +0000
Subject: Bug #64882 [Opn->Ver]: 'Could not open input file' error message goes to STDOUT
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-201770@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=64882&edit=1 ID: 64882 Updated by: cmb@php.net Reported by: weirdan at gmail dot com Summary: 'Could not open input file' error message goes to STDOUT -Status: Open +Status: Verified Type: Bug Package: CGI/CLI related Operating System: Debian GNU/Linux PHP Version: 5.4.15 Block user comment: N Private report: N New Comment: I can confirm this issue still exists with latest master. The culprit appears to be that php_printf() is used[1]. [1] <https://github.com/php/php-src/blob/php-7.0.7/sapi/cli/php_cli.c#L622> Previous Comments: ------------------------------------------------------------------------ [2014-06-26 07:12:56] cweiske@php.net I can confirm this issue on 5.6.0RC1: $ ./inst/bin/php-5.6.0RC1 -i|grep display_errors display_errors => STDERR => STDERR $ ./inst/bin/php-5.6.0RC1 foo.php > /dev/null $ ------------------------------------------------------------------------ [2013-05-23 22:21:08] weirdan at gmail dot com Even though display_errors is set to STDOUT by default in php 5.3.25: weirdan@367-dsividov:~/Downloads$ php-5.3.25/sapi/cli/php -i -n | grep display_errors display_errors => STDOUT => STDOUT (and display_startup_errors are off): weirdan@367-dsividov:~/Downloads$ php-5.3.25/sapi/cli/php -i -n | grep display_startup display_startup_errors => Off => Off weirdan@367-dsividov:~/Downloads$ the following weirdan@367-dsividov:~/Downloads$ php-5.3.25/sapi/cli/php -n $(tempfile).php 2>/dev/null weirdan@367-dsividov:~/Downloads$ php-5.3.25/sapi/cli/php -n $(tempfile).php Could not open input file: /tmp/fileLHIKSE.php weirdan@367-dsividov:~/Downloads$ clearly shows that startup errors are actually going to STDERR But even I specify errors should go to STDERR, they go to STDOUT in php >= 5.4.0: weirdan@367-dsividov:~/Downloads$ for dir in ls -d php-5* | grep -v tar; do echo -n "$dir: "; $dir/sapi/cli/php -ddisplay_errors=STDERR - ddisplay_startup_errors=0 -n $(tempfile).php 2>/dev/null; echo; done; php-5.3.25: php-5.4.0: Could not open input file: /tmp/filedhceXV.php php-5.4.15: Could not open input file: /tmp/fileUv3FxW.php php-5.4.7: Could not open input file: /tmp/fileBH6TsZ.php weirdan@367-dsividov:~/Downloads$ to me it seems that startup errors started to go to STDOUT (regardless of display_errors and display_startup_errors value) in php-5.4.x and you can't really control it through either display_errors or display_startup_errors: weirdan@367-dsividov:~/Downloads$ php-5.4.0/sapi/cli/php - ddisplay_startup_errors=STDERR -ddisplay_errors=STDERR -i | egrep '(display_errors|display_startup_errors|error_log)' display_errors => STDERR => STDERR display_startup_errors => Off => Off error_log => no value => no value weirdan@367-dsividov:~/Downloads$ php-5.3.25/sapi/cli/php - ddisplay_startup_errors=STDERR -ddisplay_errors=STDERR -i | egrep '(display_errors|display_startup_errors|error_log)' display_errors => STDERR => STDERR display_startup_errors => Off => Off error_log => no value => no value weirdan@367-dsividov:~/Downloads$ php-5.4.0/sapi/cli/php -n - ddisplay_startup_errors=STDERR -ddisplay_errors=STDERR $(tempfile).php 2>/dev/null Could not open input file: /tmp/file7laZhC.php weirdan@367-dsividov:~/Downloads$ php-5.3.25/sapi/cli/php -n - ddisplay_startup_errors=STDERR -ddisplay_errors=STDERR $(tempfile).php 2>/dev/null weirdan@367-dsividov:~/Downloads$ ------------------------------------------------------------------------ [2013-05-23 18:30:40] aharvey@php.net This is controlled by the display_errors and error_log configuration variables: what do you get on each version if you run php -i | egrep '(display_errors|error_log)' ? For example, I get: adamh@swiftdesk7:/tmp$ php -i | egrep '(display_errors|error_log)' display_errors => STDOUT => STDOUT error_log => no value => no value And as you'd expect, errors are output to stdout. ------------------------------------------------------------------------ [2013-05-20 14:13:49] weirdan at gmail dot com Those folders contain vanilla PHP code, with NO Debian patches applied. ------------------------------------------------------------------------ [2013-05-20 14:08:21] weirdan at gmail dot com Description: ------------ Error messages in CLI should go to STDERR. This was the case with 5.3.x, but it doesn't seem to be the case with 5.4.* Test script: --------------- #!/bin/bash for dir in ls -d php-5*|grep -v tar; do echo -n "$dir: "; # the following line should output nothing $dir/sapi/cli/php -n $(tempfile).php 2>/dev/null; echo; done Expected result: ---------------- php-5.3.25: php-5.4.0: php-5.4.15: php-5.4.7: Actual result: -------------- php-5.3.25: php-5.4.0: Could not open input file: /tmp/filelm8WcG.php php-5.4.15: Could not open input file: /tmp/filehmMkOG.php php-5.4.7: Could not open input file: /tmp/fileSfJZ4E.php ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=64882&edit=1

« previous php.bugs (#201770) next »