php 为什么执行 shell 返回值为 1?
程序员文章站
2022-05-28 12:40:46
...
$cmd = system("wget http://la-lg.hostus.us/500MB.test",$r);
echo $r;
?>
能成功执行,但是打印的数值是1,按道理来说正常不是1吗?只有错误才会别的
回复内容:
$cmd = system("wget http://la-lg.hostus.us/500MB.test",$r);
echo $r;
?>
能成功执行,但是打印的数值是1,按道理来说正常不是1吗?只有错误才会别的
我们看下官方文档的说法:
成功则返回命令输出的最后一行, 失败则返回 FALSE
再看看英语版:
Returns the last line of the command output on success, and FALSE on failure.
实际上,这两种说法都容易引起歧义,正确的理解应该是
成功则返回命令的退出码
即
exit(code)
中的code
。
大部分情况下,exit(0)
代表没有错误。然而这并不代表所有。
具体的需要在对应命令下man wget
以下是结果:
EXIT STATUS
Wget may return one of several error codes if it encounters problems.
0 No problems occurred.
1 Generic error code.
2 Parse error---for instance, when parsing command-line options, the .wgetrc or .netrc...
3 File I/O error.
4 Network failure.
5 SSL verification failure.
6 Username/password authentication failure.
7 Protocol errors.
8 Server issued an error response.
With the exceptions of 0 and 1, the lower-numbered exit codes take precedence over higher-numbered ones, when
multiple types of errors are encountered.
所以等于0确实是代表成功,而等于1代表了出错。
你的文件真的下载成功了吗?
-1到底啥意思呢?
500M的文件?超时了吧