2017-07-25 78 views
2

美好的一天!Symfony 2.8不能寫入/ var/lib/php/sessions/

我在Symfony功能條款中有點困惑。我有一個網站,它被放置在/var/lib/php/sessions/的會話中。我很困惑,因爲在/ var/www/html/myproject /所有東西都是www-data:www-data的遞歸屬性(是的,我使用的是Apache)。但/var/lib/php/sessions/的所有者是root,所以當Apache試圖在那裏寫入時,我得到了有關在該目錄中寫入權限的500服務器錯誤。

我在這裏有意見分歧。有些人建議我修改config.yml以管理項目目錄中的會話,而其他人則認爲這是非常糟糕的做法。但是,如何在沒有文件權限錯誤的情況下將所有內容定位爲/var/lib/php/sessions/

這是我通過Apache網址獲得:

Oops! An Error Occurred 

The server returned a "500 Internal Server Error". 

Something is broken. Please let us know what you were doing when this error occurred. We will fix it as soon as possible. Sorry for any inconvenience caused. 

這是我通過PHP開發的web服務器獲得:

Warning: SessionHandler::read(): open(/var/lib/php/sessions/sess_u3eg1842nlpkbm0rvddrq37dc2, O_RDWR) failed: Permission denied (13) 
500 Internal Server Error - ContextErrorException 

我真的希望你能幫助我。

在此先感謝。

致以誠摯的問候。

+0

您是否嘗試將會話保存路徑設置爲www-data可以寫入的某個地方?不在你的公共文件夾中,但可能是'/ var/www/sessions /',例如。 –

+0

我避免了這種情況,因爲辦公室的開發人員說這是一種不好的做法。我現在就做,看看是否有效。有沒有辦法在'/ var/lib/php/sessions /'中實現呢? – Alain

回答

0

爲了創建文件,用戶必須對目錄具有寫入和執行權限。

mkdir /tmp/foo 
chmod 300 /tmp/foo 
touch /tmp/foo/bar 
test -e /tmp/foo/bar

在你的情況下,將'other'權限設置爲3將允許www-data寫入它。 chmod o+wx /var/lib/php/sessions/

爲了移除文件,用戶還必須對目錄具有寫入和執行權限。

爲了列出目錄中的文件名,用戶必須具有目錄的讀取權限。請注意,如果您知道文件名,則不需要具有列出目錄的權限。

爲了列出文件的屬性,用戶必須對目錄具有執行權限。

在我的電腦上,/var/lib/php/sessions的許可是drwx-wx-wt。 t表示執行&粘性位。目錄粘滯意味着只有所有者才能刪除它。

有關更多信息,請參閱Unix File and Directory Permissions and Modes by Wayne Pollock

+0

那,先生,爲我工作。謝謝! – Alain