内容简介:在php中,我们可以使用正常来说执行结果会跟在服务器上直接执行问题
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执行某个命令时,不报错,也不返回结果,原因是此命令没有在 /usr/bin
目录下,以 ifconfig
为例,我们可以用`whereis
ifconfig ,找出此命令具体路径,比如路径在
/usr/sbin`下,两种解决办法:
解决
1 复制命令到 /usr/bin
下(不太推荐)
2 直接将命令全路径补全 exec('/usr/sbin',$output);
(推荐)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 使用函数式实现命令模式
- 关于如何处理面向对象、函数式、命令式、声明式编程
- JavaScript中的函数与命令模式,Java也有参考价值
- CVE-2018-19518:PHP imap_open函数任意命令执行漏洞复现
- 【巨杉数据库Sequoiadb】【咨询】【内置SQL】执行exec命令查询substr函数时报错-195
- Flask 偏函数、g对象、flask-session、数据库连接池、信号、自制命令、flask-admin
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Learning Vue.js 2
Olga Filipova / Packt Publishing / 2017-1-5 / USD 41.99
About This Book Learn how to propagate DOM changes across the website without writing extensive jQuery callbacks code.Learn how to achieve reactivity and easily compose views with Vue.js and unders......一起来看看 《Learning Vue.js 2》 这本书的介绍吧!