今天我须要在同事访问个人PHP页面的时候执行一段python脚本,因而个人代码是这样写的:php
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,可是仍是不行。接着尝试命令以下:python
su -c "/usr/bin/python /data/script/abc/run.py" www
命令行中也无任何输出。所以我怀疑是php解析器所在的用户的问题,接着执行以下命令:shell
cat /etc/passwd
获得以下效果:apache
www:x:30:8:WWW daemon apache:/var/lib/www:/bin/false
你们能够看到最后是/bin/false,也就是说www用户是没有shell的,所以也就执行不了命令,那么接下来就是给它shell环境,执行以下命令:bash
usermod -s /bin/bash www
这样以后一切正常了。最后说一句php中仍是最好不要调用系统命令。。。this