詳解PHP中如何執(zhí)行系統(tǒng)命令
常見方法
使用反引號執(zhí)行
<?php
$result = `ipconfig`;
$result = iconv('GBK', 'utf-8', $result);
echo $result;
?>使用 exec
<?php
$result = exec("ipconfig");
echo $result;
?>使用 system
<?php
$result = system("ipconfig");
echo $result;
?>Windows
讀取外部普通文件時
<?php
echo (file_get_contents('D:/a.csv'));
?>注意:直接讀取即可。
執(zhí)行系統(tǒng)命令
<?php echo `net start ToDesk_Service`; ?>
注意:需要管理員權限或者管理員授權才可以執(zhí)行。
Linux
Apache
讀取外部普通文件時
讀取防火墻文件,文件有 r 權限,每級目錄都有 rx 權限即可。
<?php
echo (file_get_contents('/etc/firewalld/zones/public.xml'));
?>執(zhí)行系統(tǒng)命令時
執(zhí)行關閉防火墻命令(寫一段 PHP 代碼,并通過瀏覽器訪問此頁面)。
<?php echo `sudo systemctl stop firewalld`; // 關閉失敗 ?>
找到關于此命令的位置。
whereis systemctl # 發(fā)現(xiàn)位置在 /usr/bin/systemctl
查看目錄權限,發(fā)現(xiàn)每級目錄都有 rx 權限,但依然無法執(zhí)行。
ll /usr/bin/ | grep systemctl ll /usr/ | grep bin ll / | grep usr
解決
使用 root 管理員用戶
查看 apache 默認用戶(寫一段 PHP 代碼,并通過瀏覽器訪問此頁面)。
<?php echo 'whoami'; // 顯示默認用戶為 daemon ?>
嘗試改成 root 用戶
cd /opt/lampp/etc # 切換到 /opt/lampp/etc/ 目錄
vi httpd.conf # 編輯 httpd.conf 文件
/User # 找到 User
User root # 改成 root 用戶
Group root # 改成 root 組重啟 lampp
/opt/lampp/lampp restart # 發(fā)現(xiàn)啟動失敗
xampp 集成環(huán)境為了安全性考慮不能改成 root 用戶訪問。
將命令的執(zhí)行權限賦予給 xampp(Apache)對應的用戶。最后執(zhí)行關閉防火墻命令,即可成功。
vi /etc/sudoers 或 visudo # 編輯 /etc/sudoers 按 G # 將光標移動到最后一行 按 i ,添加 daemon ALL=(ALL) NOPASSWD:ALL 或 daemon ALL=(ALL) NOPASSWD:/usr/bin/systemctl,/usr/bin/firewall-cmd # 添加授權指令 # 含義:給哪個用戶授權 允許哪個主機訪問=模擬哪個賬號執(zhí)行命令 不要求輸入密碼:允許執(zhí)行的命令路徑 圖片
以上就是PHP中如何執(zhí)行系統(tǒng)命令的詳細內(nèi)容,更多關于PHP執(zhí)行系統(tǒng)命令的資料請關注腳本之家其它相關文章!
相關文章
PHP中__LINE__,__FILE__,__DIR__等常用魔術常量實例講解
PHP?向它運行的任何腳本提供了大量的預定義常量。魔術常量準確來說并不能算是常量,常量我們在之前的文章中我們介紹到,常量被定義之后是不能被改變的。但是魔術常量是PHP預定義的一些常量,這些預定義的常量能夠因為所在位置的變化而變化。2022-12-12
php中使用array_filter()函數(shù)過濾空數(shù)組的實現(xiàn)代碼
這篇文章主要介紹了php中使用array_filter()函數(shù)過濾空數(shù)組的實現(xiàn)代碼,這是瀏覽PHP手冊時無意發(fā)意的一個有意思的array_filter()函數(shù)用法,需要的朋友可以參考下2014-08-08
php array_values 返回數(shù)組的所有值詳解及實例
這篇文章主要介紹了php array_values 返回數(shù)組的所有值詳解及實例的相關資料,需要的朋友可以參考下2016-11-11
Zend Framework入門教程之Zend_Db數(shù)據(jù)庫操作詳解
這篇文章主要介紹了Zend Framework入門教程之Zend_Db數(shù)據(jù)庫操作,結合實例形式詳細分析了Zend_Db_Adapter的功能及數(shù)據(jù)庫操作的相關技巧,需要的朋友可以參考下2016-12-12

