php shell_exec不能用_php shell_exec exec - CSDN
精华内容
参与话题
  • windows+PHP+shell_exec()无法执行的原因

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

    今天使用shell_exec()命令执行wkhtmltopdf.exe 生成pdf文件时,总是无法生成PDF文件,使用var_dump()打印返回值,结果是null。可是检查代码并没有什么问题啊?执行程序的目录是
    D:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe
    好吧,接下来找找原因。

    1、通过dos执行wkhtmltopdf程序

    首先测试通过dos命令行执行wkhtmltopdf程序:
    这里写图片描述
    执行成功,没有问题。

    查看pdf文件是否成功生成:
    这里写图片描述
    文件同样成功生成。

    这说明程序执行没有问题。

    2、PHP安全模式

    网上说PHP安全模式会影响到shell_php()函数的执行。我查了一下,发现php.ini中安全模式只有

    [SQL]
    ; http://php.net/sql.safe-mode
    sql.safe_mode = Off

    没有其他的安全模式。而且安全模式还会影响exec()函数的使用,我之前曾经使用过exec()函数,所以不是安全模式的问题。

    3、php.ini中disable_functions参数

    百度时,有人说是php.ini配置文件中disable_funcitons=shell_exec()。禁用了shell_exec()函数。好吧,php.ini默认disable_funcitons= (null)。看来不是这里的原因呢。

    4、程序执行目录问题

    之后,我有检查了一下shell_exec()的执行代码,发现执行目录
    D:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe有问题。
    在第二个目录Program Files中有空格存在,之前考虑到不能含有中文的问题,所以安装wkhtmltopdf时,走的是D盘下的默认目录(本来是C盘,我改为D盘了)。既然不能走中文目录,是不是含有空格的目录也是不行的呢?于是我就把D:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe改为D:\wkhtmltopdf\bin\wkhtmltopdf.exe。然后修改了shell_exec()执行代码的执行目录。
    最后执行成功,生成了pdf文件。

    5、环境变量问题

    此外把文件添加到环境变量中,可以不用带目录执行wkhtmltopdf程序。只不过,因为是测试wkhtmltopdf是否能执行含有html+css代码的文件生成带有css格式PDF文件,所以没有添加到环境变量中,希望有小伙伴使用wkhtmltopdf时,可以安装wkhtmltopdf到D:\Program Files下,然后添加到环境变量内,用php的shell_exec()使用一下,看看能否成功。

    展开全文
  • 今天发现在使用定时器的时候,执行一个shell脚本,打印日志正常,然后在系统中不能查到当前Shell脚本执行的结果。 因为使用的是Web程序,对于Shell调用这块也是新手。以前没有遇到过这种问题,只能靠猜了。 判断 ...

    问题

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

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

    判断

    1、Shell脚本问题。

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

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

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

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


    结论:

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


    展开全文
  • php中判断shell_exec执行结果

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

       在做第三方登录的时候,注册时头像下载比较耗时,所以改为了异步 shell_exec 执行wget 

       不过shell_exec执行成功无输出  和  执行失败 返回的都是null 在记录错误日志的时候区分就成问题了。


       在php手册的评论中找到了区分的方法,在此记录一下。

       

    $shell = "wget -O despath sourcepath &&  echo 'success' ";
    $shellExec = shell_exec($shell);
    var_dump($shellExec);

      这样 当前面的执行成功的时候 会执行echo 执行结果就是success 而不是空了 

      执行失败不再继续执行echo  执行结果仍旧是null 

      这样就区分除了执行结果,记录对应日志就OK了。

      补充一下,大概是这样的。。。

     

     $shellExec = shell_exec("cd ../");
     var_dump($shellExec);//NULL
      
     $shellExec = shell_exec("cd ../ && echo 'suc'");
     var_dump($shellExec);//string(4) "suc "
    

    展开全文
  • execshell_exec的区别

    万次阅读 2016-11-01 14:41:29
    手册 shell_exec函数运行在shell脚本环境,没有返回值 shell_exec (PHP 4, PHP 5, PHP 7) shell_exec — 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。 说明 string shell_exec ( ...

    手册 shell_exec函数运行在shell脚本环境,没有返回值

    shell_exec

    (PHP 4, PHP 5, PHP 7)

    shell_exec 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。

    说明

    string shell_exec ( string $cmd )

    本函数同 执行操作符

    参数

    cmd

    要执行的命令。

    返回值

    命令执行的输出。 如果执行过程中发生错误或者进程不产生输出,则返回 NULL

    Note:

    当进程执行过程中发生错误,或者进程不产生输出的情况下,都会返回 NULL, 所以,使用本函数无法通过返回值检测进程是否成功执行。 如果需要检查进程执行的退出码,请使用 exec() 函数。

    范例

    Example #1 shell_exec() 例程

    <?php
    $output 
    shell_exec('ls -lart');
    echo 
    "<pre>$output</pre>";


    exec

    (PHP 4, PHP 5, PHP 7)

    exec 执行一个外部程序

    说明

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

    exec() 执行 command 参数所指定的命令。

    参数

    command

    要执行的命令。

    output

    如果提供了 output 参数, 那么会用命令执行的输出填充此数组, 每行输出填充数组中的一个元素。 数组中的数据不包含行尾的空白字符,例如 \n 字符。 请注意,如果数组中已经包含了部分元素,exec() 函数会在数组末尾追加内容。如果你不想在数组末尾进行追加, 请在传入 exec() 函数之前 对数组使用 unset() 函数进行重置。

    return_var

    如果同时提供 output return_var 参数, 命令执行后的返回状态会被写入到此变量。

    返回值

    命令执行结果的最后一行内容。 如果你需要获取未经处理的全部输出数据, 请使用 passthru() 函数。

    如果想要获取命令的输出内容, 请确保使用 output 参数。

    范例

    Example #1 exec() 例程

    <?php
    // 输出运行中的 php/httpd 进程的创建者用户名
    // (在可以执行 "whoami" 命令的系统上)
    echo exec('whoami');
    ?>

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

    万次阅读 2020-05-06 11:56:28
    多半原因在php.ini文件中未打开方法权限 在php.ini开启即可
  • 在Windows平台下安装PHP后,在使用PHPexecshell_exec等函数时,经常会遇到报错:unable to fork...,这实际上是因为PHP对cmd.exe没有足够的权限引起的。 解决方法:为C:\Windows\System32\cmd.exe(系统不是...
  • PHP Shell_exec所遇到的坑

    千次阅读 2017-08-07 15:23:37
    因为需要在项目中使用shell_exec执行python脚本,在测试下shell_exec("test.py")能够正常无误运行,但是加个目录shell_exec("python/test.py")则失效了,PHP框架,原因一开始想到是PHP的目录限制,但是苦试无果...
  • 解决PHP调用execshell_exec的问题

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

    千次阅读 2018-12-29 17:38:51
    这两个函数都是执行Linux命令函数,不同的是获取返回结果一样,exec只能获取最后一行数据,shell_execu则可以获取全部数据。 php中的execshell_exec两个函数都可以用来执行linux命令,但它们在使用方式以及结果...
  • 编辑php.ini,找到这行: ...disable_functions = scandir,passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status, ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink
  • ytkah在composer安装插件时出现了shell_exec() has been disabled for security reasons错误提示,这个是php配置的问题,shell_exec() 函数被禁用了。怎么解决呢? shell_exec() has been disabled for ...
  • php 用exec执行shell命令时超时。

    千次阅读 2017-05-08 11:51:42
    php 用exec执行shell命令时超时。 $cmd = “sh build.sh” exec($cmd); $cmd命令是一个2-3分钟的执行时间,请问怎么保证php不超时。 希望是等待此shell执行完,直接返回 yushu_bd | 浏览 1903 次 ...
  • php中的execshell_exec两个函数都可以用来执行linux命令,但它们在使用方式以及结果的返回上,差别还是比较大的。 exec 调用方式: exec($cmd.' 2>&1',$output,$status); $cmd:shell脚本 2>&1:...
  • 最近刚买了一个新空间,网站上线后发现总是出现以下警告: ...Warning: shell_exec() has been disabled for security reasons in/home/shoesnba/public_html/redsoleshoeses.com/includes/function...
  • PHP 命令行工具 shell_exec, exec, passthru

    千次阅读 2010-12-06 23:18:00
    PHP 命令行工具 shell_exec, exec, passthru
  • 通过执行系统命令,我们可以调用系统的一些功能,甚至与其他语言进行交互。 1 system() : system — 执行外部程序(命令行),并且显示输出 这个函数会将结果直接进行输出 (注意:是直接输出区别于返回值,因为这个...
  • php文件调用exec前设定环境变量 $locale='en_US.UTF-8'; setlocale(LC_ALL,$locale); putenv('LC_ALL='.$locale);
  • 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_exec("ls");php正常执行 shelL_exec("docker run ....");手动执行,php中无法执行,
  • 请问下,我想执行shell_exec(cmd: "java -jar"." ".$config." ".$file1); 错误提示:Parse error: syntax error, unexpected ':' in D:\phpStudy\PHPTutorial... shell_exec执行cmd命令行是不是还要开启配置的?
1 2 3 4 5 ... 20
收藏数 24,828
精华内容 9,931
关键字:

php shell_exec不能用