分類
系統設定

[系統設定] 關於SuPHP與檔案權限設定

這幾天MrMo.cc所在的主機商更動系統,將原本為mod_php模式的主機,改變為SuPHP,因此造成了造訪部落格時發生HTTP 500 Error,後來詢問原因之後才知道,在SuPHP的模式下不允許任何權限為 777 的目錄及檔案。另外在SuPHP的模式下也不支援透過 .htaccess 檔案變更 php.ini 參數,因此如果原本.htaccess檔案中有存在著php_ 開頭的設定,也將造成造訪網頁時,產生500錯誤。

那遇到這些問題時,該怎麼解決呢?

首先先檢查網站上,網頁的檔案中是否還有目錄或檔案權限為777,如果有,則把目錄權限修改為755,檔案權限修改為644。感覺只要在網頁目錄下執行chmod 644 -R *.*就可以解決了,但,事情總沒有那麼簡單,這樣的執行並不完整,最後在網路上找到了關於主機設定為SuPHP後要如何設定的資料,看到了更完整更好的變更所有目錄及權限方法。

變更目錄權限
find /home/*/public_html -type d -exec chmod 755 {} ;

變更檔案權限
find /home/*/public_html -type f -exec chmod 644 {} ;

上述的方法之中,可以把find裡的路徑修改為自己主機上的路徑,其實可以算是find很進階的使用。如果你的主機並不是所有的檔案都要設定為644那,可以參考這個網頁中的方法

find /home/*/public_html/ -type d -print0 | xargs -0 chmod 0755 # For directories
find /home/*/public_html/ -type f -not -name “*.pl” -not -name “*.cgi” -not -name “*.sh” -print0 | xargs -0 chmod 0644 # For files

至於,為什麼主機那邊要從mod_php改變為SuPHP呢?根據這一篇文章中所提到的,可以看到主要的原因就是SuPHP安全性比較高,但效能相對於mod_php較差

SuPHP
Pros:
PHP runs as your user/group
PHP files can have perms of 640 (hiding things like passwords from other accounts)
Files/folders written by PHP are written as user/group (no apache or other global user)
Custom php.ini file per site (can add/remove security options)
Can run php4 and php5 at the same time (on even the same site!)

Cons:
Slower
many PHP .htaccess options do not work (since you can have your own php.ini file this make this point moot)

apache/mod_php
Pros:
Faster (about 25-30%)

Cons:
PHP safe mode isn’t safe
files written by PHP are saved as the apache process (usually apache/apache user/group)

作者: 墨嗓

陳佑竹,朋友都叫我墨嗓。我是專注於資訊科技整合、應用、開發方法及研究的T型人,現任 PHP 資訊系統分析師/人夫/一隻臘腸狗的爸爸。平時喜好羽球、登山及手沖咖啡

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料