php - 執行Linux命令沒有報錯但也沒有輸出


今天我需要在同事訪問我的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中還是最好不要調用系統命令。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM