php - 执行Linux命令没有报错但也没有输出
php - 执行Linux命令没有报错但也没有输出
huangjacky 发表于3年前
php - 执行Linux命令没有报错但也没有输出
  • 发表于 3年前
  • 阅读 30
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

今天我需要在同事访问我的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中还是最好不要调用系统命令。。。

共有 人打赏支持
粉丝 6
博文 19
码字总数 0
×
huangjacky
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: