Bug #72256 [Opn]: echo statement on invalid fd cause php to abort

From: Date: Wed, 15 Dec 2021 14:01:30 +0000
Subject: Bug #72256 [Opn]: echo statement on invalid fd cause php to abort
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-238436@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=72256&edit=1 ID: 72256 Updated by: cmb@php.net Reported by: prinbra at gmail dot com Summary: echo statement on invalid fd cause php to abort Status: Open Type: Bug Package: *General Issues PHP Version: Irrelevant -Assigned To: +Assigned To: cmb Block user comment: N Private report: N New Comment: Behavior confirmed: <https://3v4l.org/sJeMB>. Interestingly, running the script on a debug version of PHP, won't exhibit this behavior. Instead, I get: hello, world bool(true) hello, world2 hello, world2 in stderr > the fail of fprintf does not cause php to quit? why echo is so > special and so fragile? To begin with, fprintf() explicitly requests the resource, and notices that it has been closed, so it doesn't actually try to write anything to stdout (the warning goes to stderr by default). Previous Comments: ------------------------------------------------------------------------ [2016-05-27 05:13:00] prinbra at gmail dot com er, my point is: may be the php process shouldn't quit if echo failed. the fail of fprintf does not cause php to quit? why echo is so special and so fragile? example: fprintf.php <?php fprintf(STDOUT, "hello, world\n"); fclose(STDOUT); fprintf(STDOUT, "hello, world2\n"); fprintf(STDERR, "hello, world2 in stderr\n"); output: hello, world PHP Warning: fprintf(): 2 is not a valid stream resource in /tmp/t.php on line 4 hello, world2 in stder however, if change fprintf to echo, php will quit early. ------------------------------------------------------------------------ [2016-05-25 20:46:27] ab@php.net Thanks for the report. When user is logged out, the whole session becomes invalid. This should be solvable by using nohup or running PHP in screen/tmux. Thanks. ------------------------------------------------------------------------ [2016-05-23 07:32:10] prinbra at gmail dot com Description: ------------ on cli environment, when the stdout of php becomes unavailable, eg: user run php in background and logged out of their ssh connection. a echo statement will cause php process to exit immediately! strace output: 14937 12:22:18.958295 write(1, "running\n", 8) = -1 EIO (Input/output error) then php just silently quit! ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=72256&edit=1

« previous php.bugs (#238436) next »