php執行shell指令碼

2021-09-13 15:33:43 字數 1030 閱讀 1103

原文: 

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...