Somewhere between 4.1.1 and 4.2.3, the return value from pclose changed.
The exit status used to be in the second byte, so that the status would be (pclose($fp)/256).
It is now in the low-order byte, so the status is just pclose($fp).
Be careful.
pclose
(PHP 4, PHP 5)
pclose — Schließt einen Prozess-Dateizeiger
Beschreibung
int pclose
( resource
$handle
)Schließt einen Prozess-Dateizeiger, der durch einen Aufruf von popen() geöffnet wurde.
Der Dateizeiger muss gültig sein und durch einen erfolgreichen Funktionsaufruf von popen() zurückgegeben worden sein.
Gibt den End-Status eines laufenden Prozesses zurück.
Siehe auch popen().
pclose
kcross at nssolutions dot com
16-Jul-2003 11:08
16-Jul-2003 11:08
vdweij at mailsurf dot com
12-Mar-2003 04:18
12-Mar-2003 04:18
As I understand pclose will return 0 (on every platform) in case popen could not execute the specified command.
Since popen only returns the status wether it was able to send a command and not wether it was succesfully executed. Only the returned value of pclose can be used to check wether a command could be executed.
roel at bouwman dot net
07-Oct-1999 07:23
07-Oct-1999 07:23
The return value of pclose() is not the exit status of the program, but a value as returned by waitpid() of wait4().
To obtain the exit status:
$ret=(pclose($f)>>8)&0xFF;