精华内容
参与话题
问答
  • PHP使用命令函数执行shell脚本 CentOS 7.6 64位 宝塔Linux面板 运行环境 Nginx 1.17.1 PHP-7.1 步骤 01 解除禁用的命令函数 出于安全考虑,命令函数是被禁用,我安装宝塔是被禁用的 #修改php.ini文件 ...

    PHP使用命令函数执行shell脚本

    • CentOS 7.6 64位
    • 宝塔Linux面板

    运行环境

    • Nginx 1.17.1
    • PHP-7.1

    步骤

    01 解除禁用的命令函数

    出于安全考虑,命令函数是被禁用,我安装宝塔是被禁用的

    #修改php.ini文件
    disable_functions =  #被禁用函数都在这一行 把需要解除的函数删除就行了 
    system exec passthru shell_exec #PHP常用命令函数
    

    02 PHP调用Linux命令权限不足的解决方法

    关于这个问题我踩的太多坑了,这也是我要写这篇文章的原因,我本人记性不好,所以记录一下

    • 01 查看启动你PHP的进程的用户是谁
    ps -ef | grep php #通过终端命令行执行查询
    echo exec('whoami'); #通过PHP命令函数查询 总来说默认没有任何权限
    
    • 02 添加一个用户和组 终端命令↓↓↓
    /usr/sbin/groupadd wroot  # wroot 用户可以自定义的
    /usr/sbin/useradd -g wroot -s /bin/bash wroot
    vim /etc/passwd #查看你刚刚添加的用户 是否添加成功
    

    wroot 是刚刚添加的

    • 03 修改PHP启动用户为您刚添加的用户
      php-fpm.conf 修改这个配置文件
      编辑成 user = wroot; group = wroot; (wroot为您刚才添加的用户)
    service php-fpm restart #命令重启php-fpm
    ps -ef | grep php #命令查看PHP启动进程的用户、是否已经变了
    
    • 04 添加刚才的用户wroot到sudoers里面
    visudo #命令修改 /etc/sudoers的内容
    ## Allow root to run any commands anywhere 
    root    ALL=(ALL)       ALL
    wroot   ALL=(ALL)       ALL //新添加这一行
    %wroot  ALL=(ALL)      NOPASSWD: ALL  
    #NOPASSWD为设置用户组下面的用户使用sudo不需要输入密码
    

    以上操作完成,但是我发现依然不能解决PHP命令shell脚本问题

    • 05 关于linux 用vi命令使用vi编辑(外话)
    s #vi界面出现 INSERT后,开始进行编辑操作 编辑完毕后,按ESC键,跳到命令模式
    :w #保存,不退出vi
    :w! #强制保存,不退出vi
    :w file #将修改另外保存到file中,但不退出vi
    :wq 或 :x #保存,并退出vi
    :wq! #强制保存,并退出vi
    :q #不保存,并退出vi
    :q! #不保存,并强制退出vi
    :e! #放弃所有修改,从上次保存文件开始再编辑
    

    03 但第二部操作还是无法解决PHP命令shell脚本问题

    还是权限问题,最后添加www-data ALL=(ALL) NOPASSWD: ALL解决了

    www-data ALL=(ALL) NOPASSWD: ALL #编辑visudo
    

    编辑visudo添加www-data

     

    编写test.sh脚本,简单的一个shell脚本 创建一个文件夹

    #! /bin/sh
    mkdir /www/a #注意.sh文件需要给执行权限
    
    #PHP
    system('sudo /usr/bin/test.sh') #注意绝对路径
    system('sudo /www/wwwroot/wert/prt.sh') #例如路径
    

    内容部分来源网络,我只是执行操作整理

    展开全文
  • PHP执行shell_exec方法失败

    万次阅读 2020-05-06 11:56:28
    多半原因在php.ini文件中未打开方法权限 在php.ini开启即可

    多半原因在php.ini文件中未打开方法权限
    在php.ini开启即可

    展开全文
  • php 执行shell

    2018-10-18 21:20:00
    <?php $shell="ls -la"; exec($shell,$result,$status); $shell="<font color='red'>$shell</font>"; echo"<pre>"; if($status){ echo"shell命令{$...

    <?php

        $shell "ls -la";
        exec($shell$result$status);
        $shell "<font color='red'>$shell</font>";
        echo "<pre>";
        if$status ){
            echo "shell命令{$shell}执行失败";
        else {
            echo "shell命令{$shell}成功执行, 结果如下<hr>";
            print_r( $result );
        }
        echo "</pre>";
    ?>

    转载于:https://www.cnblogs.com/vinzen/p/9813256.html

    展开全文
  • PHP执行shell命令无效

    2018-09-30 01:58:25
    $...上面的shell命令在linux命令行里可以执行PHP文件在CLI模式下也可以执行,在WEB下执行返回127,找不到命令。PHP是用root权限运行的,这是什么原因?
  • php执行shell脚本

    2016-07-11 19:19:16
    <p>when i use a ffmpeg command in shell_exec it works, but when i want to execute the shellscript with a given value it doesn't ... <pre><code> $cmd='ffmpeg -i /home/shorty/stormfall/'.$upld.' -...
  • php执行shell脚本

    千次阅读 2019-03-25 16:44:15
    php作为一门服务器端脚本语言,也是可以调用系统命令的,这其中就包括了执行shell脚本 编写test.sh脚本如下 #! /bin/sh mkdir /www/a 很简单的一个shell脚本 创建一个文件夹 php脚本如下 system('/us...

    原文:https://blog.csdn.net/zhangsheng_1992/article/details/52805760 

    php作为一门服务器端脚本语言,也是可以调用系统命令的,这其中就包括了执行shell脚本


    编写test.sh脚本如下

    #! /bin/sh

    mkdir /www/a

    很简单的一个shell脚本 创建一个文件夹


    php脚本如下

    system('/usr/bin/test.sh')


    在运行前 首先需要验证的

    1.test.sh脚本是否具有可执行权限

    2.apache nginx phttp等web服务器是否有test.sh的权限

    3.由于是同步文件命令 所以需要确保用户对要下载的目录有写入权限

    4.由于我使用php版本高于5.4,已经删除了安全模式一说,说一也不存在运行在安全模式下

    5.执行的脚本请使用绝对路径 这点很重要


    但是  实际运行后  我发现输出了faild  说明脚本并没有执行成功  查了下原因  是因为apache用户不具备某些目录的执行权限(没个用户有没个用户的可执行目录,你的脚本需要在该目录下)   切换目录属主容易造成安全问题  在linux下 root用户是不受此限制的 所以 临时让用户可以切换到root权限 既可以简单的规避此类问题  如何操作呢?

    首先 查看你的apache用户或者nginx php-fpm用户

    可以使用 ps -ef  | grep httpd 命令来查看  其他同理

    经查我的apache用户为_www用户

    然后 visudo   或者 vim /etc/sudoers 找到

    ## Allow root to run any commands anywhere 

    root    ALL=(ALL)       ALL这一行 在下边追加

    _www ALL=(root)  NOPASSWD:ALL
    第一列是用户  第二个是可以切换到的用户 我这里写的是root  如果你想让随意切换可以在这里写All  第三个是可以执行的脚本路径 ALL 表示所有

    最后 重启apache让用户重新获得权限

    修改php脚本

    system('sudo /usr/bin/test.sh')


    运行 执行成功~~~

    展开全文
  • PHP执行SHELL命令

    千次阅读 2018-08-16 18:00:05
    &lt;?php  //需要的话请回复一下,没时间上代码 ;&gt;
  • PHP执行shell脚本

    2013-09-29 18:39:24
    使用sysytem() exec() 能执行 shell脚本 当遇到多行的时候先生成 .bat文件 (unix 生成.sh)文件 再 system('test.bat')
  • php执行shell命令

    2020-02-16 18:44:12
    php执行shell命令 php 操作shell函数 1. system() $shell = "ls"; $shell = "df -Th"; // 查看硬盘空间 $shell = "ifconfig"; // 查看网卡配置 $shell = "free -m"; // 查看内存使用情况 echo "<pre>"; ...
  • php-shellcommand, 在PHP中,一个简单的面向对象的接口来执行 shell 命令 php ShellCommand php ShellCommand提供了一个简单的面向对象接口来执行 shell 命令。特性捕获 stdOut,stdErr 和 exitCode句柄参数转义将...
  • PHP 执行shell脚本定时

    2019-10-15 17:56:07
    PHP 执行shell脚本 test .sh #!/bin/bash agent_name="控制器/方法" check_alive() { status=`ps ax | grep "$agent_name" | grep -v "grep" |wc -l` if [ $status -ne 0 ]; then # process exist ...
  • PHP执行shell命令

    2016-05-10 13:36:38
    PHP作为一种服务器端的脚本语言,象编写简单,或者是复杂的动态网页这样 的任务,它完全能够胜任。但事情不总是如此,有时为了实现某个功能,必须借助于操作系统的外部程序(或者称之为命令),这样可以做到事半功倍...
  • 关于php执行shell脚本

    2016-04-10 16:08:07
    未完,待续……
  • 如何让php执行shell

    2014-05-13 15:51:18
    虽然这三个命令都能执行linux系统的shell命令,但是其实他们是有区别的: system() 输出并返回最后一行shell结果。 exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。 passthru...
  • PHP执行shell命令

    千次阅读 2010-11-01 02:27:00
    PHP执行shell命令 PHP作为一种服务器端的脚本语言,象编写简单,或者是复杂的动态网页这样的任务,它完全能够胜任。但事情不总是如此,有时为了实现某个功能,必须借助于操作系统的外部程序(或者称之为命令),...
  • PHP执行shell捕获输出

    千次阅读 2009-11-24 16:56:00
    if ( $res = popen("ls 2>&1","r")){ while ( !feof($res) ) $result .= fgets( $res, 1024 ); pclose($res); echo $result; } 
  • php执行shell脚本问题

    2014-01-13 18:15:26
    在使用php的shell_exec执行shell脚本的时候,只能执行部分命令,或者说只能执行echo命令,像cat ,more等等都不能执行,而且无任何返回信息,比如: echo "a" cat a.txt more b.txt echo "b" 结果为: ab,中间...
  • 执行php: crontab的配置大部分都会在etc目录下的crontab。下面一行就是定时执行php(这里是每天凌晨一分钟执行,如果想每分钟执行就是* * * * *或*/1 * * * *) 1 0 * * * root /usr/local/bin/php -q /...
  • 本篇文章是对php中直接执行SHELL的方法进行了详细的分析介绍,需要的朋友参考下
  • php执行shell不阻塞方法

    千次阅读 2016-04-20 14:31:47
    大家都知道php执行系统命令的方法有: system() 输出并返回最后一行shell结果。 exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。 passthru() 只调用命令,把命令的运行结果...
  • php执行shell,不阻塞

    千次阅读 2013-03-20 10:57:44
    exec("sh /var/www/html/1.sh"." > /dev/null &"); 可以保证不阻塞,为了方便大家搜索,多加一些关键字 php,exec,阻塞,exec,system,shell_exec
  • php执行shell,返回空

    万次阅读 2013-09-17 11:25:36
    问题:以下shell脚本在 www 用户下执行 sudo /usr/local/webserver/nginx/sbin/nginx -t 是有返回结果的,但用http://localhost/nginx.php?act=test 访问是看不到返回值,shell指令都没执行,safe-mode 是off的...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...

空空如也

1 2 3 4 5 ... 20
收藏数 2,321
精华内容 928
关键字:

php执行shell