源代码:

在网上也搜索了答案

比较详细的答案是:

<?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()函数问题的更多相关文章

  1. Linux下多进程编程之exec函数语法及使用实例

    exec函数族 1)exec函数族说明 fork()函数用于创建一个子进程,该子进程几乎复制了父进程的全部内容,但是,这个新创建的进程如何执行呢?exec函数族就提供了一个在进程中启动另一个程序执行的 ...

  2. 程序清单 8-8 exec函数实例,a.out是程序8-9产生的可执行程序

    /* ============================================================================ Name : test.c Author ...

  3. JS中exec函数与match函数的区别与联系

    总结: 正则规则的声明,两种方法: exec是RegExp类的匹配方法 match是字符串类的匹配方法 var reg = /aaa/g; var reg = new RegExp("aaa ...

  4. 进程控制之exec函数

    用fork函数创建子进程后,子进程往往要调用一种exec函数以执行另一个程序.当进程调用一种exec函数时,该进程执行的程序完全替换为新程序,而新程序则从其main函数开始执行.因为调用exec并不创 ...

  5. linux exec函数家族

    1.exec家族一共有六个函数,分别是: (1)int execl(const char *path, const char *arg, ......); (2)int execle(const ch ...

  6. fork和exec函数

    #include<unistd.h> pid_t fork(void); 返回:在子进程中为0,在父进程中为子进程IO,若出错则为- fork最困难之处在于调用它一次,它却返回两次.它在调 ...

  7. 让QMainWindow也表现出QDialog的exec函数的特征

    前几天在做毕业设计项目的时候,使用的PyQt4,想实现这么样一个功能: 场景描述:主窗口a(QMainWindow类型)和主窗口b(QMainWindow),b是通过a窗口中某一个按钮弹出来的. 功能 ...

  8. 一、进程与信号之exec函数system函数

    exec函数: 子进程调用exec函数执行另一个程序,exec函数进程完全由新程序代替,替换原有程序正文,数据,堆,栈段 #include <unistd.h> extern char * ...

  9. 实例分析exec函数

    fork()函数通过系统调用创建一个与原来进程(父进程)几乎完全相同的进程(子进程是父进程的副本,它将获得父进程数据空间.堆.栈等资源的副本.注意,子进程持有的是上述存储空间的"副本&quo ...

  10. 二十五、Linux 进程与信号---exec函数

    25.1 介绍 在用 fork 函数创建子进程后,子进程往往要调用一种 exec 函数以执行另一个程序 当进程调用一种 exec 函数时,该进程完全由新程序代换,替换原有进程的正文,而新程序则从其 m ...

随机推荐

  1. uniGUI之换肤(17)

    在MainModule里  Design 模式 1]RecallLastTheme 设为True 2]Theme选一个皮肤 总共有 classicgraycrispneptunetritontrito ...

  2. Go 开发者平均年薪 46 万?爬数据展示国内 Go 的市场行情到底如何

    随着云原生时代的到来,拥有高并发性.语法易学等特点的 Golang 地位逐渐凸显,在云原生编程中占据了主导地位.在近期出炉的 TIOBE 10 月编程语言排行榜中,Golang 从前一个月的 16 位 ...

  3. webpack打包文件中的@符号表示什么意思

    在看使用webpack打包的项目代码时,经常会看到在路径中引用@符号 import one from '@/views/one.vue' 那这里的@符号到底表示什么意思呢? 这其实利用了webpack ...

  4. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:显示关闭按钮

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  5. java#tostring

    通常使用apache-commons 来生成tostring方法,但是对于类型为java.util.Date的字段打印效果并不是我们想要的. @Override public String toStr ...

  6. Day9 - I - 不要62 HDU - 2089

    杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer).杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍, ...

  7. shell命令、调度工具、后台执行线程和软连接

    一.shell命令 1.后缀.sh 第一行需要加#!/bin/bash 没有的话,需呀sh 命令执行 示例test.sh: #!/bin/bash date ./test.sh 提示没有权限,此时,需 ...

  8. javac导出参考文档报错 错误: 编码GBK的不可映射字符”

  9. Linux之关于用户的几个重要配置文件

    . /etc/skel/ 用来存放新用户配置文件(环境变量)的目录,当创建新用户时,系统会把当下目录的所有文件拷贝一份到新用户家目录中,即:cp -a /etc/skel/* /home/ddu 2. ...

  10. Codeforces 1294D - MEX maximizing

    思维,真的很巧妙啊,看了以下博客 https://www.cnblogs.com/stelayuri/p/12230033.html