通常php在執行command line指令的時候是取決於apache的權限,所以理論上只要提高apache的權限,就可以了,不過這只是理論上= =",實作的時候不知道為什麼,還是會有權限不足的狀況,明明可以讀寫檔案了,但是要執行某個程式去控制這些檔案的時候還是會出錯,google了很久,找到3種解法。
1.使用popen function
使用此function可以用su指令切換使用者身分,而且可以填入密碼,不過某些程式還是不能執行,失敗。2.安裝一個叫做super的套件,此套件會幫php取得root權限
直接讓php取得root權限,感覺很危險3.給apache不用密碼的sudo權限
此方式感覺也是挺危險的...不過是目前最簡單的解法,只好用這個了...以下介紹如何給予apache sudo權限
1.先在php上執行system(“id”),確定php使用的身分
2.使用root將/etc/sudoers先改成可寫入的權限
3.修改/etc/sudoers 把Defaults requiretty註解掉(非常重要,不註解可能造成某些指令無法執行)
4.最後一行加入your_id ALL=(ALL) NOPASSWD: ALL
5.記得把權限改回來
這樣php就可以直接使用sudo指令了...
沒有留言:
張貼留言