zoukankan      html  css  js  c++  java
  • php

    今天我需要在同事访问我的PHP页面的时候执行一段python脚本,于是我的代码是这样写的:

     1 <?php
     2     function my_workjob(){
     3         $this->makeLog('ok run workjob');
     4         if($this->is_internal()){
     5             $cmd = '/usr/bin/python /data/script/abc/run.py';
     6             $out = system($cmd);
     7             echo 'run';
     8             echo $out;
     9         }else{
    10             echo 'hehe';
    11         }
    12     }

    但是实际运行效果除了run 什么都没有。我猜想是用户没有权限,于是相关的目录+x,但是还是不行。接着尝试命令如下:

    su -c "/usr/bin/python /data/script/abc/run.py" www

    命令行中也无任何输出。因此我怀疑是php解析器所在的用户的问题,接着执行如下命令:

    cat /etc/passwd

    得到如下效果:

    www:x:30:8:WWW daemon apache:/var/lib/www:/bin/false

    大家可以看到最后是/bin/false,也就是说www用户是没有shell的,因此也就执行不了命令,那么接下来就是给它shell环境,执行如下命令:

    usermod -s /bin/bash www

    这样之后一切正常了。最后说一句php中还是最好不要调用系统命令。。。

  • 相关阅读:
    C++调用外部应用程序
    SVN文件加锁
    vs ComboBox显示多行
    __slots__ Python Class限制添加属性
    Python数据分析之pandas学习
    整理Lua和Unity和Lua交互文章链接
    [整理]Unity3D游戏开发之Lua
    ping telnet ssh netstat
    java rpc
    css 手机适配
  • 原文地址:https://www.cnblogs.com/huangjacky/p/4002421.html
Copyright © 2011-2022 走看看