在php中,咱们能够使用exec()
来执行系统命令,但有时咱们会遇到exec()
命令执行不成功,或者无返回的状况,下面来讲明一下:php
exec ( string $command [, array &$output [, int &$return_var ]] ) : string 参数说明: 1.$command 要执行的命令 2.$output 执行结果 3.$return_var 若同时设置 $output 和此变量,命令执行后的返回状态会被写入到此变量
exec("ping www.baidu.com", $output);
正常来讲执行结果会跟在服务器上直接执行ping
没区别,可是因为某些缘由会致使意外状况,下边针对两种状况做出说明,以及解决办法linux
问题服务器
当咱们在服务器上直接执行linux系统命令时(此处以ping为例),执行权限取决于咱们登录用户的权限,若是咱们登录用户为root
,则执行ping
的时候是用root来执行。但当咱们在网站上访问的时候,咱们此时的用户为www
,若是不修改ping的执行权限的话,是没法执行成功的。
解决函数
修改ping或者对应命令的执行权限
问题网站
还有一种状况,当咱们用exec执行某个命令时,不报错,也不返回结果,缘由是此命令没有在环境变量配置的目录下即/etc/profile
文件中,以ifconfig
为例,咱们能够用whereis ifconfig
,找出此命令具体路径,好比路径在/usr/sbin
下,两种解决办法:
解决code
1 复制命令到/usr/bin
下,也就是环境变量下的目录(不太推荐)
2 直接将命令全路径补全exec('/usr/sbin',$output);
(推荐)
3 在环境变量中增长目标目录例如增长/usr/sbin
到目录