当前位置: 首页 > Linux

PHP中的exec()函数执行系统命令失败

时间:2023-04-06 05:42:48 Linux

0。解释一下在PHP中我们可以使用exec()来执行系统命令,但是有时候会遇到exec()命令执行失败或者什么都不返回的情况,下面来解释一下:1.函数exec(string$command[,array&$output[,int&$return_var]]):string参数说明:1.$command要执行的命令2.$output执行结果3.$return_var如果同时设置$output和该变量,则命令执行后的返回状态会被写入这个变量2.Exampleexec("pingwww.baidu.com",$output);正常情况下执行结果跟直接在服务器上执行ping没有区别,但是由于某些原因,会造成意想不到的情况。下面分两种情况进行说明,以及解决方法2.1权限问题当我们直接在服务器上执行linux系统命令时(这里以ping为例),执行权限取决于我们登录用户的权限。如果我们的登录用户是root,我们就用root来执行ping。但是当我们访问网站的时候,我们此时的用户是www。如果不修改ping的执行权限,是无法执行成功的。解决修改ping或相应命令的执行权限问题2.2命令路径问题还有一种情况。当我们使用exec执行命令时,没有报错,也没有返回结果。原因是该命令不在环境变量配置的目录下。在/etc/profile文件中,以ifconfig为例,我们可以通过whereisifconfig来找出这条命令的具体路径。例如,路径在/usr/sbin下。有两种解决方法:解决方法1将命令复制到/usr/bin,即环境变量下的目录(不推荐)2直接补全命令的全路径exec('/usr/sbin',$output);(推荐)3在环境变量中添加目标目录,如在目录中添加/usr/sbin