php執行系統命令
❶ php eval怎樣執行系統命令
eval — 把字元串作為PHP代碼執行
說明
mixedeval( string $code_str )
把字元串code_str作為PHP代碼執行。 除了其他,該函數能夠執行儲存於資料庫文本欄位內的PHP代碼。
使用eval()時需注意幾個因素:注意字元必須是有效的PHP代碼,包括結尾的分號,以不至於解釋器在eval()之後退出。並且正確地轉義code_str中的東西。你可以使用一個PHP閉合標簽來混合輸出HTML和PHP代碼。
同時需注意eval中的變數會被保留在之後的主腳本中。
參數
code_str需要被執行的字元串code_str不能包含 PHP Opening tags。
return語句會立即中止當前字元串的執行。
返回值
eval()返回NULL,除非在執行的代碼中return了一個值,函數返回該值。 如果在執行的代碼中有一個解析錯誤,eval()返回FALSE,之後的代碼將正常執行。無法使用 set_error_handler() 捕獲eval()中的解析錯誤。
範例
Example #1eval()例子 - 簡單的文本合並
<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.';
echo $str. "\n";
eval("\$str = \"$str\";");
echo $str. "\n";
?>
以上常式會輸出:
This is a $string with my $name in it.This is a cup with my coffee in it.
Note: 因為是一個語言構造器而不是一個函數,不能被 可變函數 調用。
Tip和直接將結果輸出到瀏覽器一樣,可使用輸出控制函數來捕獲當前函數的輸出,然後(例如)保存到一個 string 中。
Note:
如果在執行的代碼中產生了一個致命的錯誤(fatal error),整個腳本會退出。
linux 中
shell中的eval命令將會首先掃描命令行進行所有的替換,然後再執行命令。該命令使用於那些一次掃描無法實現其功能的變數。該命令對變數進行兩次掃描。這些需要進行兩次掃描的變數有時候被稱為復雜變數。
例如
$:cat ext
count=3
cmd=echo
cmd="$cmd \$$count"
ext 11 22 33
此時cmd=" echo $3"
eval $cmd 等價於 "echo 33 "
❷ 如何通過PHP執行linux命令
我使用的意思是想通過php代碼做的更好對任意那麼的目錄可讀可寫可卸載,可以執行kill pid等的命令。
當然還存在還存在的做法,這是我使用的猜測,您不妨試看看,
1、把php的運行網民改為root,這種可能會存在必須的風險。
2、在apache裡面指定可以對某個root許可權的文件或目錄做操作,該做法沒試驗過。可能您能試驗成功的話,希望反饋一下哦。
求助者:恩,第一種做法,我使用的想過,可就是我是想參考我集團的思路來,所以這種做法沒嘗試過。因為它存在安全疑問。
第二個做法,應該可以,可就是太局限性了。要是文件多咋辦,還存在我要想執行個kill,services restart等,肯定就不行了。
大家集團貌似是,寫了個linux命令,和您們的思路貌似是一樣的回者答:這是大家的做法:用VC寫個服務,該服務的運行身份是root,也可以給其最大許可權,php調用這個服務做操作。 該做法可行,只是就得多一種底層語言。
還存在的做法經測試:
第一種做法,成功。
我使用的項目用是VC寫的服務。
第一種做法,可以改變PHP的運行身份,SuexecUserGroup指定CGI程序運行時所使用的網民和組。非CGI程序的請求仍然使用User指令所指定的網民身份處理。該指令取代了Apache的VirtualHosts配置中的User和Group指令。建議您看下類似的文檔,個人做調試。好像還存在別的做法哦。好像是用super。這種您得個人摸索。我只提供思路哦`` 哈哈`` 謝謝``
❸ php如何執行linux的curl指令
curl 不是即時的輸入輸出的命令,php 有運行時間限制, curl 運行會導致 curl 運行時間不夠而被殺掉的。
php 有運行 linux 命令的函數,記得 system() 是一個,之後還有另外一個。注意這兩個命令是可以在 php.ini/php.conf 裡面設置禁止使用的。
❹ PHP怎麼調用Linux命令終端
首先先要給大家介紹PHP執行linux系統命令的幾個基本函數。
system函數
說明:執行外部程序並顯示輸出資料。
語法:string system(string command, int [return_var]);
返回值: 字元串
詳細介紹:
本函數就像是 C 語中的函數 system(),用來執行指令,並輸出結果。若是 return_var 參數存在,則執行 command 之後的狀態會填入 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 command, string [array], int [return_var]);
返回值: 字元串
詳細介紹:
本函數執行輸入 command 的外部程序或外部指令。它的返回字元串只是外部程序執行後返回的最後一行;若需要完整的返回字元串,可以使用 PassThru() 這個函數。
要是參數 array 存在,command 會將 array 加到參數中執行,若不欲 array 被處理,可以在執行 exec() 之前呼叫 unset()。若是 return_var 跟 array 二個參數都存在,則執行 command 之後的狀態會填入 return_var 中。
值得注意的是若需要處理使用者輸入的資料,而又要防止使用者耍花招破解系統,則可以使用 EscapeShellCmd()。
實例代碼:
< ?php
echo exec('whoami');
?>
popen函數
說明:打開文件。
語法:int popen(string command, string mode);
返回值: 整數
詳細介紹:
本函數執行指令開檔,而該文件是用管道方式處理的文件。用本函數打開的文件只能是單向的 (只能讀或只能寫),而且一定要用 pclose() 關閉。在文件操作上可使用 fgets()、fgetss() 與 fputs()。若是開檔發生錯誤,返回 false 值。
實例代碼:
< ?
$fp = popen( "/bin/ls", "r" );
?>
通過上述函數,PHP可以執行linux系統的shell命令。
❺ linux下php腳本怎麼執行
在 Linux 下執行 php 腳本時通常是可以使用以下命令:
#/usr/local/php/bin/php test.php
為簡化輸入可把此php執行程序 到系統命令目錄下:
#cp /usr/local/php/bin/php /usr/sbin/
驗證:輸入以下命令,如正確獲取 php 版本,說明操作成功。
#php -v
這樣,以後再執行PHP腳本時可直接採用以下輸入方式即可。
#php a.php