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 — プロセスのファイルポインタをクローズする
説明
int pclose ( resource $handle )popen() でオープンしたパイプへの ファイルポインタをクローズします。
ファイルポインタは有効なものでなければならず、また popen() で正常にオープンされたものである必要があります。
実行していたプロセスの終了ステータスを返します。
popen() も参照ください。
pclose
kcross at nssolutions dot com
17-Jul-2003 06:08
17-Jul-2003 06:08
vdweij at mailsurf dot com
13-Mar-2003 12:18
13-Mar-2003 12: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
08-Oct-1999 02:23
08-Oct-1999 02: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;