博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP中exec()函数执行系统命令失败
阅读量:6532 次
发布时间:2019-06-24

本文共 799 字,大约阅读时间需要 2 分钟。

0.说明

在php中,我们可以使用exec()来执行系统命令,但有时我们会遇到exec()命令执行不成功,或者无返回的情况,下面来说明一下:

1.函数

exec ( string $command [, array &$output [, int &$return_var ]] ) : string  参数说明:  1.$command   要执行的命令  2.$output  执行结果  3.$return_var 若同时设置 $output 和此变量,命令执行后的返回状态会被写入到此变量

2.例子

exec("ping www.baidu.com", $output);

正常来说执行结果会跟在服务器上直接执行ping没区别,但是由于某些原因会导致意外情况,下边针对两种情况作出说明,以及解决办法

2.1 权限问题

问题

当我们在服务器上直接执行linux系统命令时(此处以ping为例),执行权限取决于我们登陆用户的权限,如果我们登陆用户为
root ,则执行
ping的时候是用root来执行。但当我们在网站上访问的时候,我们此时的用户为
www,如果不修改ping的执行权限的话,是无法执行成功的。

解决

修改ping或者对应命令的执行权限
2.2 命令路径问题

问题

还有一种情况,当我们用exec执行某个命令时,不报错,也不返回结果,原因是此命令没有在环境变量配置的目录下即
/etc/profile文件中,以
ifconfig为例,我们可以用
whereis ifconfig,找出此命令具体路径,比如路径在
/usr/sbin下,两种解决办法:

解决

1 复制命令到
/usr/bin下,也就是环境变量下的目录(不太推荐)
2 直接将命令全路径补全
exec('/usr/sbin',$output);(推荐)
3 在环境变量中增加目标目录例如增加
/usr/sbin到目录

转载地址:http://qeqbo.baihongyu.com/

你可能感兴趣的文章
如何解决ORA-28002 the password will expire within 7 days问题(密码快过期)
查看>>
Asp.Net Core 轻松学-利用日志监视进行服务遥测
查看>>
LightSwitch社区资源搜集
查看>>
Android通讯录查询篇--ContactsContract.Data 二(续)
查看>>
IT人的自我导向型学习:开篇杂谈
查看>>
[原创]BizTalk动手实验系列目录
查看>>
HDU 4611Balls Rearrangement(思维)
查看>>
[LeetCode] Majority Element II
查看>>
minGW, cygwin, GnuWin32【C++的跨平台交叉编译问题】
查看>>
我的Dll(动态链接库)学习笔记(转)
查看>>
应用程序域
查看>>
有向图的拓扑排序算法JAVA实现
查看>>
HTML页面跳转的5种方法
查看>>
李洪强-C语言5-函数
查看>>
开源监控利器grafana
查看>>
Android获取当前时间与星期几
查看>>
jenkins2 multibranch
查看>>
Css定位-定位
查看>>
am335x 电容屏驱动添加。
查看>>
rhel-server-7.2-x86_64无法联网(VMware环境)
查看>>