你想問得是php如何執行shell命令把?\x0d\x0a\x0d\x0a可以用system(),exec(),passthru()這三個函數實現\x0d\x0a雖然這三個命令都能執行linux系統的shell命令,但是其實他們是有區別的:\x0d\x0a system() 輸出並返回最後一行shell結果。\x0d\x0a exec() 不輸出結果,返回最後一行shell結果,所有結果可以保存到一個返回的數組裡面。\x0d\x0a passthru() 只調用命令,把命令的運行結果原樣地直接輸出到標准輸出設備上。\x0d\x0a 相同點:都可以獲得命令執行的狀態碼\x0d\x0a例子:system("ls -al");\x0d\x0a【使用之前要在php.ini中把safe_mode關閉】
Ⅱ 如何讓PHP有許可權執行Linux下的命令
php執行linux的命令用system或exec就可以,只要打開safemode,但是一些系統底層的沒有執行命令的不允許調用哦,實在有些命令例如zip之類想用的話,直接用php寫入一個shell腳本文件再exec那個sh就好了。
Ⅲ php調用linux命令更改文件許可權
我們的伺服器是這樣做的:
php一般是以apache用戶身份去執行的,把apache加入到存儲你文件的父文件夾屬組里去,然後改該父文件夾許可權為775,這樣屬組成員就有寫的許可權,而apache屬於這個組就可以改寫該目錄下所有文件的許可權,當然,屬組最好不要是root,你可以為該文件夾改個其它普通用戶組。
改apache/php的運行用戶方法不安全,不建議使用。
Ⅳ php鎬庝箞甯﹀弬鏁版墽琛宭inux緋葷粺鍛戒護
exec() 姣斿傝佹墽琛宭s /tmp鍛戒護
甯﹀弬鏁幫細浣犳妸鍙傛暟浼犺繘鍘誨氨鍙浠ヤ簡
$path = '/tmp';
exec('ls '. $path)灝卞彲浠ヤ簡
Ⅳ php中使用system函數執行linux系統命令mv怎麼不行呢
這樣寫是正確的。你執行代碼後是否報錯?還是只是沒有效果?
$return變數會返回執行命令的輸出的最後一行,你可以列印出來檢查一下。
執行系統命令也可以使用反引號`,我比較喜歡這樣用
<?php
echo`mvfile1file2`;
您的採納就是對我的支持!
Ⅵ LINUX+NGINX下的PHP shell_exec()函數執行linux命令 2019-08-08
LINUX+NGINX下的PHP shell_exec()函數執行linux命令
環境說明
手頭有一台linux的測試伺服器,最近因為業務需要,需要通過php訪問另一台伺服器去執行某些命令。
由於另一台伺服器已經對這台伺服器開了私鑰,所以在終端上是可以直接執行命令而不需要輸入密碼的。
問題
PHP無法使用exec命令,沒有任何返回值。
解決途徑
1.php.ini的配置有問題。
由於php是7.0以上的版本,取消了安全模式,所以考慮PHP.ini文件配置。
打開php配置文件,裡面有一行disabel_function的值,此處記錄了禁止運行的函數,在裡面講exec和shell_exec,system等函數刪除。
2.許可權問題
修改以後PHP可以運行部分命令了,但是部分外部程序和命令仍然不能運行。使用sudo返回失敗。
於是運行「whoami」查看,環境下php-frm的運行角色是www。
於是修改sudoers文件。
vi /etc/sudoers
將www添加到
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
下面:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
www ALL=(ALL) NOPASSWD:ALL
然後找到Default requiretty這一行,把他注釋掉
# Default requiretty
ps:意思就是sudo默認需要tty終端,注釋掉就可以在後台執行了.
重啟nginx和php-fpm
service nginx restart
service php-fpm restart
這樣,PHP就可以在需要執行外部命令的時候使用sudo利用root身份執行命令,而不會報錯或者執行失敗了!
Ⅶ PHP執行linux系統命令
首先先要給大家介紹PHP執行linux系統命令的幾個基本函數 我曾經很長一段時間都分不清下面幾個函數的具體用法區別 system函數 說明 執行外部程序並顯示輸出資料 語法 string system(string mand int [return_var]); 返回值: 字元串 詳細介紹 本函數就像是 C 語中的函數 system() 用來執行指令 並輸出結果 若是 return_var 參數存在 則執行 mand 之後的狀態會填入 return_var 中 同樣值得注意的是若需要處理用戶輸入的資料 而又要防止用戶耍花招破解系統 則可以使用 EscapeShellCmd() 若 PHP 以模塊式的執行 本函數會在每一行輸出後自動更新 Web 伺服器的輸出緩沖暫存區 若需要完整的返回字元串 且不想經過不必要的其它中間的輸出界面 可以使用 PassThru() 實例代碼
< ?php $last_line = system( ls $retval); echo Last line of the output: $last_line; echo <hr />Return value: $retval; ?>exec函數 說明 執行外部程序 語法 string exec(string mand string [array] int [return_var]); 返回值: 字元串 詳細介紹 本函數執行輸入 mand 的外部程序或外部指令 它的返回字元串只是外部程序執行後返回的最後一行 若需要完整的返回字元串 可以使用 PassThru() 這個函數 要是參數 array 存在 mand 會將 array 加到參數中執行 若不欲 array 被處理 可以在執行 exec() 之前呼叫 unset() 若是 return_var 跟 array 二個參數都存在 則執行 mand 之後的狀態會填入 return_var 中 值得注意的是若需要處理使用者輸入的資料 而又要防止使用者耍花招破解系統 則可以使用 EscapeShellCmd() 實例代碼
<?php echo exec( whoami ); ?> <? $fp = popen( "/bin/ls" "r" ); ?> lishixin/Article/program/PHP/201311/21017
Ⅷ php執行linux命令並輸出終端屏幕顯示的內容(實時)
top 這種交互性實時運行在終端里的命令在腳本里好像不好使吧.
列印一次貌似可以.
$output = `top -n 1`;
echo $output;