2011-12-29 104 views
2

我目前通過ssh運行Apache webserver的遠程CentOS 5.6系統。我需要使用poppler pdftohtml二進制文件,但不幸的是,該文件目前尚未安裝在該機器上。所以我下載了poppler軟件包並將其構建在我的用戶文件夾下。由於II我不是系統管理員,我沒有做PHP shell_exec,拒絕執行-rwxrwxrwx shell腳本的權限

make install 

,我有下

/users/myfolder/poppler-0.18.2/ 

,我需要通過PHP來執行這個文件我所有的編譯的文件shell_exec()

/users/myfolder/poppler-0.18.2/utils/pdftohtml 

如果我通過我的ssh bash執行它,我得到正確的輸出。如果是我,而是把這個行PHP腳本:

echo shell_exec("https://stackoverflow.com/users/myfolder/poppler-0.18.2/utils/pdftohtml"); 

我得到以下輸出:

sh: /users/myfolder/poppler-0.18.2/utils/pdftohtml: Permission denied 

我已嘗試設置爲777文件權限,目前是-rwxrwxrwx。我還注意到使用shell_exec("whoami");導致「apache」。如果文件許可權是-rwxrwxrwx,不應該apache能夠執行腳本嗎?

我也知道通過make install安裝poppler可以解決問題,但由於這是爲了測試目的,我希望避免在我的個人文件夾之外「污染」系統,直到測試完成。

感謝任何會幫助的人!

+0

CentOS是否也使用SELinux? – mario 2011-12-29 13:33:41

回答

8

僅僅因爲文件對於用戶是可執行的並不意味着用戶實際上能夠執行該文件。用戶還需要能夠'進入'文件:用戶需要所有'父目錄'的執行權限,對於/ users,myfolder,poppler-0.18.2和utils,您需要執行權限。

假設/用戶與/ home基本相同,每個人都應該有+ x。從那裏,你可以將它設置:簡單地做chmod o+x /users/myfolder /users/myfolder/poppler-0.18.2 /users/myfolder/poppler-0.18.2/utils

(注:這將有可能使大家執行該二進制,而不僅僅是阿帕奇)

如果apache用戶和大家分享一組,最好使用chown poppler目錄,並將所有內容歸於該組,並設置g + x而不是o + x。

+0

非常明確的答案。謝謝。 – 2011-12-29 20:29:24

+0

該死的,這太瘋狂了。兩天的調查浪費了(非常感謝,我在這裏看到了一些類似的答案,但他們沒有提到所有父目錄必須具有執行權限,只有這對我有用。 – heximal 2015-03-13 08:37:26