今天给大家介绍一下怎么解决php exec报错问题。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。
创新互联是一家专业提供察哈尔右翼前企业网站建设,专注与成都网站设计、成都网站制作、H5开发、小程序制作等业务。10年已为察哈尔右翼前众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。
php exec报错的解决办法:1、修改ping或者对应命令的执行权限;2、将命令全路径补全“exec('/usr/sbin',$output);”;3、在环境变量中增加目标目录。
本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑
如何解决php exec报错问题?
在php中,我们可以使用exec()
来执行系统命令,但有时我们会遇到exec()
命令执行不成功,或者无返回的情况,下面来说明一下:
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系统命令时(此处以ping为例),执行权限取决于我们登陆用户的权限,如果我们登陆用户为root
,则执行ping
的时候是用root来执行。但当我们在网站上访问的时候,我们此时的用户为www
,如果不修改ping的执行权限的话,是无法执行成功的。
解决
修改ping或者对应命令的执行权限
问题
还有一种情况,当我们用exec执行某个命令时,不报错,也不返回结果,原因是此命令没有在环境变量配置的目录下即/etc/profile
文件中,以ifconfig
为例,我们可以用whereis ifconfig
,找出此命令具体路径,比如路径在/usr/sbin
下,两种解决办法:
解决
1 复制命令到/usr/bin
下,也就是环境变量下的目录(不太推荐)
2 直接将命令全路径补全exec('/usr/sbin',$output);
(推荐)
3 在环境变量中增加目标目录例如增加/usr/sbin
到目录
以上就是怎么解决php exec报错问题的全部内容了,更多与怎么解决php exec报错问题相关的内容可以搜索创新互联之前的文章或者浏览下面的文章进行学习哈!相信小编会给大家增添更多知识,希望大家能够支持一下创新互联!