原文:
php作為一門伺服器端指令碼語言,也是可以呼叫系統命令的,這其中就包括了執行shell指令碼
編寫test.sh指令碼如下
#! /bin/sh
mkdir /www/a
很簡單的乙個shell指令碼 建立乙個資料夾
php指令碼如下
system('/usr/bin/test.sh')
在執行前 首先需要驗證的
1.test.sh指令碼是否具有可執行許可權
2.apache nginx phttp等web伺服器是否有test.sh的許可權
4.由於我使用php版本高於5.4,已經刪除了安全模式一說,說一也不存在執行在安全模式下
5.執行的指令碼請使用絕對路徑 這點很重要
但是 實際執行後 我發現輸出了faild 說明指令碼並沒有執行成功 查了下原因 是因為apache使用者不具備某些目錄的執行許可權(沒個使用者有沒個使用者的可執行目錄,你的指令碼需要在該目錄下) 切換目錄屬主容易造成安全問題 在linux下 root使用者是不受此限制的 所以 臨時讓使用者可以切換到root許可權 既可以簡單的規避此類問題 如何操作呢?
首先 檢視你的apache使用者或者nginx php-fpm使用者
可以使用 ps -ef | grep httpd 命令來檢視 其他同理
經查我的apache使用者為_www使用者
然後 visudo 或者 vim /etc/sudoers 找到
## allow root to run any commands anywhere
root all=(all) all這一行 在下邊追加
_www all=(root) nopasswd:all
第一列是使用者 第二個是可以切換到的使用者 我這裡寫的是root 如果你想讓隨意切換可以在這裡寫all 第三個是可以執行的指令碼路徑 all 表示所有
最後 重啟apache讓使用者重新獲得許可權
修改php指令碼
system('sudo /usr/bin/test.sh')
執行 執行成功~~~
shell 執行shell指令碼
bin bash echo hello world 是乙個約定的標記,它告訴系統這個指令碼需要什麼直譯器來執行,即使用哪一種 shell。echo 命令用於向視窗輸出文字。1 作為可執行程式 chmod x test.sh 使指令碼具有執行許可權 test.sh 執行指令碼注意,一定要寫成 test...
Shell指令碼執行
shell是乙個命令列直譯器,它為使用者提供了乙個向linux核心傳送請求以便執行程式的介面系統級程式,使用者可以用shell來啟動 掛起 停止甚至是編寫一些程式。shell指令碼 shell script 是一種shell編寫的指令碼程式。linux的shell種類很多,常見的有 bourne a...
shell指令碼執行
最近工作特別忙,感覺好長時間沒有寫日誌了,今天就來簡單的聊一下linux系統中的shell指令碼。其實簡單來說就是shell程式設計就是對一堆linux命令的邏輯化處理,在指令碼裡編輯所要執行的業務邏輯。bin bash modify below variables if you need.user...