今天我須要在同事訪問個人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