我正在努力理解shell_exec()
和exec()
之间的区别……
我一直使用exec()
来执行服务器端命令,什么时候才能使用shell_exec()
shell_exec()
仅仅是exec()
的缩写吗?这似乎是相同的事情,但参数更少。
发布于 2011-08-17 21:45:30
shell_exec
将所有输出流作为字符串返回。默认情况下,exec
返回输出的最后一行,但可以将所有输出作为指定为第二个参数的数组提供。
看见
发布于 2013-03-07 06:20:54
以下是不同之处。注意末尾的换行符。
> shell_exec('date')
string(29) "Wed Mar 6 14:18:08 PST 2013\n"
> exec('date')
string(28) "Wed Mar 6 14:18:12 PST 2013"
> shell_exec('whoami')
string(9) "mark\n"
> exec('whoami')
string(8) "mark"
> shell_exec('ifconfig')
string(1244) "eth0 Link encap:Ethernet HWaddr 10:bf:44:44:22:33 \n inet addr:192.168.0.90 Bcast:192.168.0.255 Mask:255.255.255.0\n inet6 addr: fe80::12bf:ffff:eeee:2222/64 Scope:Link\n UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1\n RX packets:16264200 errors:0 dropped:1 overruns:0 frame:0\n TX packets:7205647 errors:0 dropped:0 overruns:0 carrier:0\n collisions:0 txqueuelen:1000 \n RX bytes:13151177627 (13.1 GB) TX bytes:2779457335 (2.7 GB)\n"...
> exec('ifconfig')
string(0) ""
请注意,backtick operator的用法与shell_exec()
相同。
更新:,我真的应该解释最后一个。多年后看着这个答案,我甚至不知道为什么它是空白的!丹尼尔在上面解释了这一点--这是因为exec
只返回最后一行,而ifconfig
的最后一行恰好是空白的。
发布于 2011-08-17 21:46:05
https://stackoverflow.com/questions/7093860
复制相似问题