2013-05-15 52 views
3

這是問題所在。Symfony2緩存重新創建 - 寫入權限失敗

應用程序/緩存文件夾中緩存的商店。我目前在dev環境下工作,我的緩存存儲在app/cache/dev文件夾中。

PHP應用程序/控制檯高速緩存:當我使用symfony的控制檯COMAND緩存清理問題似乎明確

當我嘗試加載我的項目本地主機/ symfony中/ dev_app.php我收到一個錯誤:

的RuntimeException:無法寫入

我已經安裝了setfacl的擴展緩存文件,因爲debian不支持CHMOD一個+,這裏是我做了什麼:

起初,我檢查時,HTTP請求進行哪些用戶使用:

ps aux | grep http 

ahmed  7219 0.0 0.0 7552 884 pts/0 S+ 19:51 0:00 grep http 

然後,我通過執行

清除應用程序/緩存文件夾
rm -rf app/cache/* 

下一個步驟是:

setfacl -R -m d:u:ahmed:rwx,ahmed:rwx app/cache 

據我所知,該命令設置默認權限FO用戶在應用程序/緩存文件夾ahmed和它當前和新的子文件夾和文件。

在我的控制檯我下艾哈邁德用戶的工作。

經過這一切,我加載了localhost/symfony/dev_app.php並創建了緩存。然後

php app/console cache:clear 

並再次** ocalhost/symfony/dev_app.php *創建新的緩存。但我仍然收到此錯誤

RuntimeException:無法寫入緩存文件「/var/www/local/symfony/app/cache/dev/classes.php」。

那我做錯了嗎?

這裏的getfacl的上市爲應用程序/緩存/ dev的

[email protected]:/var/www/local/symfony$ getfacl app/cache/dev 
# file: app/cache/dev 
# owner: root 
# group: ahmed 
# flags: -s- 
user::rwx 
user:ahmed:rwx 
group::r-x 
mask::rwx 
other::r-x 
default:user::rwx 
default:user:ahmed:rwx 
default:group::r-x 
default:mask::rwx 
default:other::r-x 
+0

我不是文件系統ACL的專家,但Symfony書籍列出了2個命令。你是否也運行過第二個(帶有「-dR」標誌)? IIRC ACL也必須在該分區上啓用。 – gilden

+0

是的,我做到了。我正確安裝了ACL,在/ etc/fstab中將它設置爲我的分區,重新安裝了它。然後我運行這2個命令。它沒有幫助。 – Ahmed

+0

啊!但是您沒有爲Web服務器正確設置ACL。 'ps aux |的輸出grep http'正在向您返回grep進程本身。 Web服務器很可能以不同的名稱運行。嘗試對'apache'或'[a] apache'進行搜索以不列出搜索過程本身。 – gilden

回答

5

web服務器羣(可能www-data)需要能夠寫入緩存也是如此你的用戶。您的用戶(ahmed)應該是www-data組的成員(請注意,您必須重新登錄才能使組成員身份生效)。在應用程序/緩存和應用程序/日誌上設置setgid位(+s)將確保您的用戶在其中創建的文件和目錄將保持www-data的羣組所有權。在app_dev.php內取消對umask(0002)行的註釋,以便由www-data創建的文件將保持組所有權,確保您的用戶擁有0002的umask(在提示時鍵入umask或設置umask 0002,Google提供登錄時設置此幫助)以及確保您的權限如下所示:

drwxrwsr-x 13 user www-data 4096 2013-05-10 11:05 dev 

當用戶創建艾哈邁德文件/由ahmed.www-data+s擁有的目錄中的目錄,你會發現,他們也被ahmed.www-data擁有。

+1

這可能工作,但它是一個完全不同的方式來做到這一點,並沒有解決有關acl的問題。 – Eugene