精华内容
参与话题
问答
  • 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 执行脚本

    千次阅读 2019-08-05 15:18:40
    PHP -v 找不到命令 ➜ which php /usr/local/php/bin/php ➜ vim /etc/profile PATH=$PATH:$HOME/bin:/usr/local/php/bin/ export PATH ...PHP命令行执行脚本php ./dosomethings.php PHP网页操...

    PHP -v 找不到命令

    ➜   which php
    
    /usr/local/php/bin/php
    
    ➜   vim /etc/profile
    
    PATH=$PATH:$HOME/bin:/usr/local/php/bin/
    
    export PATH
    
    ➜  source /etc/profile

    PHP命令行执行脚本

    ➜  php ./dosomethings.php

    PHP网页操作shell脚本

    需要给用户加入权限

    ➜  lsof -i:80
    
    COMMAND PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    nginx   714  root    6u  IPv4  12949      0t0  TCP *:http (LISTEN)
    nginx   715 nginx    6u  IPv4  12949      0t0  TCP *:http (LISTEN)
    nginx   716 nginx    6u  IPv4  12949      0t0  TCP *:http (LISTEN)
    nginx   717 nginx    6u  IPv4  12949      0t0  TCP *:http (LISTEN)
    nginx   718 nginx    6u  IPv4  12949      0t0  TCP *:http (LISTEN)
    
    ➜  vim /etc/sudoers
    
    ## Allow root to run any commands anywhere 
    root    ALL=(ALL)       ALL
    nginx    ALL=(ALL)       NOPASSWD:ALL #此行新加入nginx组无密码权限
    ## Allows members of the 'sys' group to run networking, software, 
    

    欢迎来我的私人博客看看:http://blog.6le6le.com/

    展开全文
  • windows下使用PHP实现定时执行脚本 一直以来,使用PHP定时运行脚本都是让大家头痛的问题,但是我们确实可以利用windows的计划任务来定时调用PHP脚本,当然这还要感谢PHP.exe。下面,站长将向大家介绍,如何来实现。 ...
  • 计算php脚本执行时间

    千次阅读 2013-01-14 22:11:14
    前言 ...今天查询数据库的时候感觉脚本执行时间挺久,写了个function计算php脚本的执行时间,记录一下吧 microtime计算脚本执行时间 /** * Description:计算当前时间 * * @return float

    前言

    快年假了,最近想多做些工作上的事情,帮助导师的公司度过难关吧,故而算法的文章会减少很多,可能会记录一些工作上的收获。今天查询数据库的时候感觉脚本执行时间挺久,写了个function计算php脚本的执行时间,记录一下吧

    microtime计算脚本执行时间

        /**
         * Description:计算当前时间
         * 
         * @return float
         */
        function getCurrentTime ()
        {
            list ($msec, $sec) = explode(" ", microtime());
            return (float)$msec + (float)$sec;
        }


    使用示例

    $begin = getCurrentTime();
    sleep(10);
    $end = getCurrentTime();
    $spend = $end-$begin;
    echo "脚本执行时间为:".$spend."\n";


    后记

    哈哈,比较简单,记录一下,方便检索吧
    展开全文
  • php 异步执行脚本

    千次阅读 2016-09-26 17:39:21
    这里说的异步执行是让php脚本在后台挂起一个执行具体操作的脚本,主脚本退出后,挂起的脚本还能继续执行。比如执行某些耗时操作或可以并行执行的操作,可以采用php异步执行的方式。主脚本和子脚本的通讯可以采用外部...

    这里说的异步执行是让php脚本在后台挂起一个执行具体操作的脚本,主脚本退出后,挂起的脚本还能继续执行。比如执行某些耗时操作或可以并行执行的操作,可以采用php异步执行的方式。主脚本和子脚本的通讯可以采用外部文件或memcached的方式。原理就是通过exec或system来执行一个外部命令。注意:本文所述的是针对Linux环境。

    在Linux下要让一个脚本挂在后台执行可以在命令的结尾加上一个 “&” 符号,有时候这还不够,需要借助nohup命令,关于nohup,可以参考http://www.netingcn.com/linux-nohup.html

    CLI环境和Web环境执行的操作还不太一样。先来说CLI环境,这里需要用上nohup和&,同时还要把指定输出,如果不想要输出结果,可以把输出定向到/dev/null中。现在来做一个测试,假设在一个目录中有main.php、sub1.php和sub2.php,其中sub1和sub2内容一样都让sleep函数暂停一段时间。代码如下:

    //main.php
    <?php
        $cmd = 'nohup php ./sub.php >./tmp.log  &';
        exec($cmd);
        $cmd = 'nohup php ./sub1.php >/dev/null  &';
        exec($cmd);
    ?>
    
    //sub1.php sub2.php
    <?php
        sleep(100000);
    ?>

    上述文件中main.php是作为主脚本,在命令行中执行php main.php,可以看到main.php脚本很快就执行完并退出。在使用ps aux | grep sub命令搜索进程,应该可以在后台看到上述的两个子脚本,说明成功挂起了子脚本。

    在Web环境下,执行php脚本都是Web服务器开启的cgi进程来处理,只要脚本不退出,就会一直占有该cgi进程,当启动的所有cgi进程都被占用完后就不能在处理新的请求。所以对那些可能会很费时的脚本,可以采用异步的方式。启动子脚本的方式和CLI差不多,必须要使用&和指定输出(只好是定向到/dev/null),但是不能使用nohup。例如:

    <?php
        $cmd = 'php PATH_TO_SUB1/sub1.php >/dev/null  &';
        exec($cmd);
        $cmd = 'php PATH_TO_SUB1/sub2.php >/dev/null  &';
        exec($cmd);
    ?>

    当在浏览器中访问该脚本文件,可以看到浏览器里面响应完成,同时使用ps命令查看后台可以看到sub1和sub2脚本。

    注意上述例子中如果php命令不在PATH中,需要指定命令完整的路径。推荐使用完整路径,特别是在Web下。

    展开全文
  • 问题cron 定时触发任务,但是始终没有执行,并且在/var/log/cron里也没有对应的日志产生,并且也在php-fpm的日志文件下也没有错误日志产生。分析&&解决cron没有执行?并没有 : (service crond status crond (pid ...
  • php 自动执行脚本

    2015-12-08 18:02:25
    "F:\wamp\bin\php\php5.3.10\php.exe" -f "F:\wamp\www\settime\index.php"  新建一个bat文件 比如test.bat,保存上面的内容,在添加一个windows定时执行任务 ,执行text.bat ...就会自动执行 index.php 这个脚本
  • php自动执行脚本

    2014-12-25 10:02:06
    <?php ignore_user_abort(TRUE); set_time_limit(0);//一般默认是30秒 $interval=10; $stop=1; do{ if($stop==10) break; file_put_contents('test.php', '现在时间:'.date('y-m-d h:i:s').'stop:'....
  • php执行mysql存储及执行脚本 php页面执行mysql存储过程: # vi cunchu.php <?php $db = new mysqli("localhost","root","123456","team1"); $result=$db->query("CALL challenge_crontab()"); ?> :wq ...
  • <p>Here I'm trying to execute a PHP script ...proc = subprocess.Popen("php textcleaner.php, src.jpg", shell=True,stdout=subprocess.PIPE) script_response = proc.stdout.read() </code></pre> </div>
  • centos上自动执行脚本执行php文件 1 先编写执行PHP文件的脚本 vi php.sh #!/bin/sh /usr/bin/php /etc/1.php 2把php.sh添加到自动执行任务中 cd /etc/ vi crontab */1...
  • php执行shell脚本

    千次阅读 2019-03-25 16:44:15
    php作为一门服务器端脚本语言,也是可以调用系统命令的,这其中就包括了执行shell脚本 编写test.sh脚本如下 #! /bin/sh mkdir /www/a 很简单的一个shell脚本 创建一个文件夹 php脚本如下 system('/us...
  • <p>I have a php script that creates a shell script which is run after making it from the same php file, the shell script generates a registry file that I need to read after the script is executed, ...
  • php exec 执行php脚本

    2014-04-08 15:49:00
    有时候,因为业务需求,需要一些定时跑的脚本。比如一些脚本5min跑一次,10min跑一次,1day跑一次… 随着这样的... 一个办法就是,crontab定时跑某几个脚本,比如去执行5min.php。然后在这个脚本里,将要执行脚本...
  • <p>I'm making a php site, and I would like to have a script (when you click a button) wich adds some info to my mysql database (I can do this part by myself) and it executes a script 5 minutes later....
  • PHP架构分析PHP 脚本执行步骤 MINIT模块初始化阶段(Module init) : 其实就是根据php.ini文件,调用每个扩展源码中的的PHP_MINIT_FUNCTION中的方法初始化模块,进行一些模块所需变量的申请,内存分配,函数注册等。...
  • PHP执行shell脚本

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

    2015-11-10 08:13:18
    <p>I trying to execute perl script from php with the following code: ... exec($command, $output);...<p>I tried with system, passthru, exec_shell but script doesn't works. <p>Can you help me? </div>
  • 定时执行php脚本

    千次阅读 2016-11-10 02:14:20
    使用PHP定时执行某些任务的话, 可以有以下两个方法: 1. Linux下crontab, windows下计划任务,具体实现可以参考我之前写的一篇博客: http://blog.csdn.net/zls986992484/article/details/53108836 2. 使用php的相关...
  • PHP终止脚本执行

    万次阅读 2018-05-08 16:43:41
    终止脚本执行,指的是通过一条语句告诉PHP引擎,此语句之后的其他语句不需要执行。 PHP提供了三种方式来终止脚本执行:return,die,exit return:执行到该处退出,如果是在函数中,表示退出函数,如果是在脚本中...
  • nohup: ignoring input and appending output to `/home/wz/nohup.out'
  • 后台执行PHP 脚本

    千次阅读 2018-10-08 13:34:21
    但是今天通过putty在远程服务器上执行php a.php &amp;之后,a.php脚本并没有在后台运行起来。 于是在网上找到了nohup,具体方法为: nohup php a.php &amp; 这样即使退出了终端,a.php依然在后台运行。 ...
  • crontab执行php脚本

    2018-07-26 17:31:42
    crontab定时执行PHP脚本 创建foo.sh #!/usr/sbin/php &amp;amp;amp;amp;amp;lt;?php var_dump($argv); $argv包含当运行于命令行下时传递给当前脚本的参数的数组(第一个参数总是当前脚本的文件名,因此 $argv...
  • linux 执行php脚本

    2014-05-03 18:59:07
    输入任务执行的时间参数和要执行的文件路径和文件名 命令 which php 查看linux下安装的php的路径 */1 * * * * /usr/bin/php -q /var/www/runtest.php (前五个参数为时间参数:分 小时 月的...
  • php作Linux自动执行脚本在 linux下,可以使用crontab + php的方法:1、使用crontab –e编辑定时任务内容为:XX:xx:xx 执行一个test.php文件2、php文件必须在文件头一行,加上解释器路径(就象perl做的那样)#!...
  • 题目中的上传包含两部分,一部分是上传文件,一部分是利用PHP执行脚本 上传文件到指定文件夹 所谓文件上传是指将本地文本文件,图片视频或者音频等文件上传到服务器上,以供后续操作的过程。 上传文件有几种...
  • PHP作一社区, 在写到计算最高上线人数时, 成功调试出把PHP作为 shell script直接在服务器上运行. 在作社区时, 时常需要统计上线人数等数据. 一般做法是, 把这段代码放在用户 login或者某一个页面中, 以便在用户...

空空如也

1 2 3 4 5 ... 20
收藏数 9,190
精华内容 3,676
关键字:

php执行脚本