exec()函数问题
源代码:

在网上也搜索了答案
比较详细的答案是:
<?php
exec("lsof -i:80",$out,$status);
结果:
var_dump($out);
array(0) { }
echo $status;值为127
2、通过:shell_exec("id -a");查看一下用户以及用户组
<?php
echo shell_exec("id -a");
结果:uid=1002(www) gid=1002(www) groups=1002(www)
3、登录Linux给www用户赋予root级别的权限试一试看
修改/etc/sudoers文件
root ALL=(ALL) ALL
下面增加一行
www ALL=(ALL) ALL
修改后执行php,结果没意义,返回的数组依然为空array(0) { }
4、修改权限没有效果,网上查询说exec第三个参数返回127可能还与路径有关系,那么从路径方面着手试一试
exec("whereis lsof", $out);
var_dump($out);
结果:
array(1) { [0]=> string(50) "lsof: /usr/sbin/lsof /usr/share/man/man8/lsof.8.gz" }
lsof命令所在文件路径: /usr/sbin/lsof
所以把 exec("lsof -i:80",$out1,$status);修改为exec("/usr/sbin/lsof -i:80",$out1,$status);
var_dump($out1);
结果成功执行了
返回结果如下:
array(6) {
[0]=> string(56) "COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME"
[1]=> string(67) "nginx 31706 www 6u IPv4 165987 0t0 TCP *:http (LISTEN)"
[2]=> string(67) "nginx 31707 www 6u IPv4 165987 0t0 TCP *:http (LISTEN)"
[3]=> string(113) "nginx 31707 www 12u IPv4 232481 0t0 TCP localhost.localdomain:http->192.168.204.1:55893 (ESTABLISHED)"
[4]=> string(67) "nginx 31708 www 6u IPv4 165987 0t0 TCP *:http (LISTEN)"
[5]=> string(67) "nginx 31709 www 6u IPv4 165987 0t0 TCP *:http (LISTEN)"
}
_______________________________________________________________________________________________________
linux 配置情况:
php.ini 配置文件我没有禁用exec()函数 安全模式 也是false
/etc/sudoers 文件也配置了

结果依旧没有生效 真的很悲剧啊
为此我做了个实验

证明上面我的配置是正确的!!!!
系统的命令就不需要加全路径 一般放在/usr/bin/ 下面的命令
但问题还是来了 which php 始终返回不了值????????
exec("/usr/local/node/bin/node -v 2>&1", $out, $status); 只能换种方式了,这种方式比较的保守
exec()函数问题的更多相关文章
- Linux下多进程编程之exec函数语法及使用实例
exec函数族 1)exec函数族说明 fork()函数用于创建一个子进程,该子进程几乎复制了父进程的全部内容,但是,这个新创建的进程如何执行呢?exec函数族就提供了一个在进程中启动另一个程序执行的 ...
- 程序清单 8-8 exec函数实例,a.out是程序8-9产生的可执行程序
/* ============================================================================ Name : test.c Author ...
- JS中exec函数与match函数的区别与联系
总结: 正则规则的声明,两种方法: exec是RegExp类的匹配方法 match是字符串类的匹配方法 var reg = /aaa/g; var reg = new RegExp("aaa ...
- 进程控制之exec函数
用fork函数创建子进程后,子进程往往要调用一种exec函数以执行另一个程序.当进程调用一种exec函数时,该进程执行的程序完全替换为新程序,而新程序则从其main函数开始执行.因为调用exec并不创 ...
- linux exec函数家族
1.exec家族一共有六个函数,分别是: (1)int execl(const char *path, const char *arg, ......); (2)int execle(const ch ...
- fork和exec函数
#include<unistd.h> pid_t fork(void); 返回:在子进程中为0,在父进程中为子进程IO,若出错则为- fork最困难之处在于调用它一次,它却返回两次.它在调 ...
- 让QMainWindow也表现出QDialog的exec函数的特征
前几天在做毕业设计项目的时候,使用的PyQt4,想实现这么样一个功能: 场景描述:主窗口a(QMainWindow类型)和主窗口b(QMainWindow),b是通过a窗口中某一个按钮弹出来的. 功能 ...
- 一、进程与信号之exec函数system函数
exec函数: 子进程调用exec函数执行另一个程序,exec函数进程完全由新程序代替,替换原有程序正文,数据,堆,栈段 #include <unistd.h> extern char * ...
- 实例分析exec函数
fork()函数通过系统调用创建一个与原来进程(父进程)几乎完全相同的进程(子进程是父进程的副本,它将获得父进程数据空间.堆.栈等资源的副本.注意,子进程持有的是上述存储空间的"副本&quo ...
- 二十五、Linux 进程与信号---exec函数
25.1 介绍 在用 fork 函数创建子进程后,子进程往往要调用一种 exec 函数以执行另一个程序 当进程调用一种 exec 函数时,该进程完全由新程序代换,替换原有进程的正文,而新程序则从其 m ...
随机推荐
- Python 爬取 北京市政府首都之窗信件列表-[Scrapy框架](2020年寒假小目标04)
日期:2020.01.22 博客期:130 星期三 [代码说明,如果要使用此页代码,必须在本博客页面评论区给予说明] //博客总体说明 1.准备工作(本期博客) 2.爬取工作 3.数据处理 4.信息展 ...
- siblings() 获取同胞元素的用法
1. $("h2").siblings().css({"color":"red","border":"2px ...
- python如何画三维图像?
python三维图像输出的代码如下所示:#画3D函数图像输出from mpl_toolkits.mplot3d import Axes3Dfrom matplotlib import cmimport ...
- Adroid ViewPage+GridView实现每页6个元素,三页滑动切换
//}//public class MainActivity extends Activity {// private static final float APP_PAGE_SIZE = 16.0f ...
- 二、js中基础知识
该篇文章主要是强化一下自己javaScript的基础,让写代码变得更轻松些.基础好的请忽略. JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解 ...
- redis中关闭rdb跟aof
https://zm10.sm-tc.cn/?src=l4uLj8XQ0IiIiNGdip2KlJDRnJCS0JaRmZCbmouelpPSzc%2FJz8vJxtGXi5KT&uid=49 ...
- oracle随机生成时间
Julian Date定义 Julian Date:有效的日期范围是从公元前4713年1月1日到公元9999年12月31日.儒略日(julian date)是自公元前4713年1月1日中午12时起经过 ...
- 在Gridview控件中根据Field Name来取得对应列索引
下面方法,只能在Gridview的BoundField进行操作,而在TemplateField模版中去找的话,就无能为力了,因TemplateField模版没有DataField属性. public ...
- redis列表-list
Redis的list类型其实就是一个每个子元素都是string类型的双向链表,链表的最大长度是2^32.list既可以用做栈,也可以用做队列. 常用命令: 1. lpush key value [va ...
- swoole之建立 http server
一.代码部分 <?php /** * 传统:nginx <-> php-fpm(fast-cgi process manager) <-> php * swoole:ht ...