2016-02-08 23 views
0

我有一個shell腳本,它在執行時會創建一些文件夾並將文件複製到它們中。我也有一個node.js「程序」,它正是shell腳本所做的。PHP:shell_exec一個shell腳本與shell_exec一個Linux上的程序(權限)

當我使用PHP的shell_exec調用shell腳本時,我收到一個權限錯誤,它基本上表示shell腳本沒有權限生成文件夾。我做了一些谷歌搜索,結果我必須設置無密碼sudo,誰知道還有什麼欺騙來解決這個問題。

但是,我做了一個完全相同的事情與節點,當我運行節點「程序」通過調用它與shell_exec就像以前一樣,似乎這個節點「程序」有權做任何事情。

這背後的原因是什麼?爲什麼「程序」在運行時有權限,但shell腳本不能?這是一種合法的方式,例如,文件系統操作(調用PHP中的node.js進行的操作)?因爲如果我嘗試使用PHP來執行相同的操作,那麼煩人的就是無法獲得權限。

回答

0

Php是由Apache或類似的東西運行,並運行在用戶www-data或http或類似的東西。您的節點服務器可能在piwwoli用戶下運行。 piwwoli可以在/ home/piwwoli下創建一個目錄,但www-data不能。

程序和shell腳本在運行時都有權限,問題在於誰在運行它們。

您可以創建一個目錄,這兩個由www數據和piwwoli是可寫的:

mkdir /path/to/dir 
chmod o+w,g+w /path/to/dir 
chown piwwoli.www-data /path/to/dir # maybe you'll need sudo for this to work 
相關問題