php 无法执行shell_php 执行shell shell_exec - CSDN
精华内容
参与话题
  • PHP执行shell命令无效

    2018-09-30 01:58:25
    $...上面的shell命令在linux命令行里可以执行PHP文件在CLI模式下也可以执行,在WEB下执行返回127,找不到命令。PHP是用root权限运行的,这是什么原因?
  • 今天发现在使用定时器的时候,执行一个shell脚本,打印日志正常,然后在系统中不能查到当前Shell脚本执行的结果。 因为使用的是Web程序,对于Shell调用这块也是新手。以前没有遇到过这种问题,只能靠猜了。 判断 ...

    问题

    今天发现在使用定时器的时候,执行一个shell脚本,打印日志正常,然后在系统中不能查到当前Shell脚本执行的结果。

    因为使用的是Web程序,对于Shell调用这块也是新手。以前没有遇到过这种问题,只能靠猜了。

    判断

    1、Shell脚本问题。

    验证方式:进入系统控制台,然后直接调用脚本,验证脚本正常。排除脚本本身问题。

    2、判断应该问题来自于权限

    验证方式:进入控制台,查看执行日志author.log。果然上面提示账号权限有问题。

    ls 查看Shell脚本信息,发现Web程序的用户和Shell脚本的权限用户不是同一个账号。将其修改为同一个账号,,再次启动程序问题解决。


    结论:

    类似问题基本上都是由以上两个方面引起的。有异常的时候多看下日志,基本上的问题都会打印出来的。


    展开全文
  • 使用php system,exec,之类的的shell调用函数无法退出的问题 当执行的脚本没有后台任务时,不会有任何问题 一旦出现无限循环的后台进程则会卡住不动 比如test1.sh的内容如下 #!/bin/bash while true do ...

    做一些服务器部署的时候出现的一系列问题

    使用sshpass执行脚本时,无法退出

    使用php system,exec,之类的的shell调用函数无法退出的问题


    当执行的脚本没有后台任务时,不会有任何问题

    一旦出现无限循环的后台进程则会卡住不动

    比如test1.sh的内容如下

    #!/bin/bash
    while true
    do
    echo "it's in loop"
    sleep 1
    done


    test2.sh内容如果是

    #!/bin/bash
    
    test1.sh &

    执行 ./test2.sh毫无问题,但是如果用 php的system执行,则会一直卡着(sshpass也是一样)

    原因在于test1.sh的输出流被绑定到了执行进程,因此php跟sshpass之类的会认为程序没有结束

    处理方法是 重定向输出流到文件或者/dev/null即可搞定

    #!/bin/bash
    
    test1.sh > /dev/null &
    展开全文
  • PHP调用shell命令

    千次阅读 2019-05-09 17:16:12
    PHP调用shell命令 前言 因为想用php调用python脚本,于是想到可以利用php调用shell命令的方法实现。 php版本:php7.0 三种方法 1.system system — 执行外部程序,并且显示输出 函数使用方法 system ( string $...

    PHP调用shell命令

    前言

    因为想用php调用python脚本,于是想到可以利用php调用shell命令的方法实现。
    php版本:php7.0

    三种方法

    1.system

    system — 执行外部程序,并且显示输出

    函数使用方法

    system ( string $command [, int &$return_var ] ) : string
    

    example:

    <?php
    $last_line = system('ls',$return_val);
    echo(“last line:”.$last_line);
    echo(“return:”.$return_val);
    

    说明:执行了shell命令,并直接输出其返回结果;
    函数的返回结果为shell命令输出内容的最后一行;
    $return_val为shell命令的返回结果。

    2.exec

    exec — 执行一个外部程序

    exec ( string $command [, array &$output [, int &$return_var ]] ) : string
    

    example:

    <?php
    exec('ls',$out);
    var_dump($out);
    

    说明:exec函数返回结果为shell命令输出内容的最后一行;
    $output为shell命令输出内容;
    $return_val为shell命令返回结果;

    3.passthru

    passthru — 执行外部程序并且显示原始输出

    passthru ( string $command [, int &$return_var ] ) : void
    

    example:

    <?php
    passthru('ls',$res);
    echo($res);
    

    说明:当所执行的 Unix 命令输出二进制数据, 并且需要直接传送到浏览器的时候, 需要用此函数来替代 exec() 或 system() 函数。通过设置 Content-type 为 image/gif, 然后调用 pbmplus 程序输出 gif 文件, 就可以从 PHP 脚本中直接输出图像到浏览器

    展开全文
  • 解决PHP调用exec或shell_exec的问题

    千次阅读 2018-11-26 14:03:45
    最近在做一个项目需要用到PHP调用python,在服务器执行命令是可以的,但是当放在项目代码中,在web中执行命令就不行了,调试了一天,终于可以了! 环境:centos7+nginx+mysql+php7.1 首先要解决的就是权限问题和...

    最近在做一个项目需要用到PHP调用python,在服务器执行命令是可以的,但是当放在项目代码中,在web中执行命令就不行了,调试了一天,终于可以了!

    环境:centos7+nginx+mysql+php7.1

    首先要解决的就是权限问题和用户组问题:

    一、查看启动你php的进程的用户是谁。

    可以通过在命令行执行:ps -ef | grep php来看。或者在php中执行 echo exec('whoami') 来查看。centos下默认会是nobody。 nobody默认没有任何权限。

    此时先自己添加一个用户和组。

    /usr/sbin/groupadd xxxx
    /usr/sbin/useradd -g xxxx -s /bin/bash xxxx

    加完用户后、vim /etc/passwd 里面就可以看到你添加的用户了。

    二、修改php启动用户为您刚添加的用户

    找到你得php安装的地方的php-fpm.conf 。打开配置文件、编辑里面的 user = xxxx;  group = xxxx; (xxxx为您刚才添加的用户)

    重启php-fpm(service php-fpm restart)

    重复上面查看php启动进程的用户、应该已经变了。

    三、添加刚才的用户xxxx到sudoers里面

    visudo //修改/etc/sudoers的内容
    ## Allow root to run any commands anywhere 
    root    ALL=(ALL)       ALL
    xxxx   ALL=(ALL)       ALL //新添加这一行
    %xxxx        ALL=(ALL)       NOPASSWD: ALL  //设置xxxx组下面的用户使用sudo不需要输入密码

    四、到这里已经可以正常在exec中使用sudo  your command来执行命令了!!!!

    当然、最好不要在生产线上环境使用哦!可以在内网机器上面实现!一切为了安全。

    thinkphp3.2框架测试代码

    public function test1(){
            exec('/usr/local/python3/bin/python3 aa.py 2>&1',$out,$res);
            dump($out);
    }

    需要修改aa.py的权限和用户组

    chmod  -R 777 aa.py

    chown www:www aa.py

    另外就是路径问题 ,在框架里要放在和入口文件一致的目录下

    展开全文
  • php执行shell脚本

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

    千次阅读 2012-12-18 16:44:00
    php执行shell时使用的默认用户为nobody用户,因此引起命令无法执行返回结果为空的问题。 既然是权限问题,那么可以转换成root来执行,sudo即可 转换为root或者相应的用户来执行命令 exec('sudo -u root -S ...
  • 在Windows平台下安装PHP后,在使用PHP的exec、shell_exec等函数时,经常会遇到报错:unable to fork...,这实际上是因为PHP对cmd.exe没有足够的权限引起的。 解决方法:为C:\Windows\System32\cmd.exe(系统不是...
  • 在本机上想通过shell脚本执行远程机器上的命令,其实很简单,只要在ssh 的后面加上 #!/bin/bash ssh root@192.168.1.102 ####从这里开始都是在远程机器上执行命令啦 cd /tmp/test/ rm -f test.txt cat ...
  • php shell_exec("ls");php正常执行 shelL_exec("docker run ....");手动能执行,php无法执行,
  • php执行shell不阻塞方法

    千次阅读 2016-04-20 14:31:47
    大家都知道php执行系统命令的方法有: system() 输出并返回最后一行shell结果。 exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。 passthru() 只调用命令,把命令的运行结果...
  • php中的exec和shell_exec两个函数都可以用来执行linux命令,但它们在使用方式以及结果的返回上,差别还是比较大的。 exec 调用方式: exec($cmd.' 2>&1',$output,$status); $cmd:shell脚本 2>&1:...
  • PHP执行shell_exec方法失败

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

    千次阅读 2011-08-22 16:04:32
    shell里可以通过cgi模式来调用php,例如下面 /usr/php5/bin/php -q /var/html/demo.php 当需要并发处理一些php程序时 在其后面加上& 有的时候可以需要传些参数 /usr/php5/bin/php -
  • windows+PHP+shell_exec()无法执行的原因

    万次阅读 2018-01-23 11:33:34
    今天使用shell_exec()命令执行wkhtmltopdf.exe 生成pdf文件时,总是无法生成PDF文件,使用var_dump()打印返回值,结果是null。可是检查代码并没有什么问题啊?执行程序的目录是 D:\Program Files\wkhtmltopdf\bin\...
  • php中判断shell_exec执行结果

    万次阅读 2016-05-05 13:58:43
     不过shell_exec执行成功无输出 和 执行失败 返回的都是null 在记录错误日志的时候区分就成问题了。  在php手册的评论中找到了区分的方法,在此记录一下。   $shell = "wget -O despath sourcepath && echo
  • shell调用php脚本,并传递参数

    千次阅读 2013-06-28 15:34:00
    命令行执行带参数的php脚本,并取得参数 张映 发表于 2011-07-15 分类目录: php 一,为什么我们要在命令行下运行php脚本呢? 个人理解,主要有二个原因: 1,利用crontab去跑php,可以给服务器...
  • 前面文章曾提到过的定时检测压缩包并完成解压、修改文件名和导入到数据库的脚本(检测压缩包并处理的Linux脚本(解压、批量修改文件名、导入)),后来发现放到crontab中就无法执行了,费了很大劲,一步步找问题,...
  • shell脚本中,怎么定义函数及使用函数呢? 函数定义: # func_name 函数名 function func_name(){ #函数体内容 } 或 # func_name 函数名 func_name(){ #函数体内容 } 函数调用: func_name parm  函数
  • PHP中exec函数和shell_exec函数的区别

    千次阅读 2018-12-29 17:38:51
    这两个函数都是执行Linux命令函数,不同的是获取返回结果不一样,exec只能获取最后一行数据,shell_execu则可以获取全部数据。 php中的exec和shell_exec两个函数都可以用来执行linux命令,但它们在使用方式以及结果...
1 2 3 4 5 ... 20
收藏数 83,375
精华内容 33,350
关键字:

php 无法执行shell