簡體   English   中英

Symfony2 NGINX無法創建緩存目錄

[英]Symfony2 NGINX Unable to create the cache directory

我知道這似乎是一個重復的問題,但是到目前為止,我花了4個小時來尋找這個問題的直接答案。 我已經安裝了全新的CentOS 7並安裝了NGINX( https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-centos-7 )+ PHP 5.6( https://webtatic.com/packages/php56/ )和MariaDB。

按照指南,我能夠使NGINX成功提供PHP文件。

我在Symfony2中有一個要在該服務器中嘗試的項目,我的問題是當我嘗試打開http://server/web/app.php時 我收到以下錯誤:

致命錯誤:......中出現未捕獲的異常“ RuntimeException”,並顯示消息“無法創建緩存目錄(/ usr / share / nginx / html / app / cache / prod)” 。

我在文檔( http://symfony.com/doc/current/book/installation.html )中讀到,我應該解決我的權限問題,以便能夠執行以下操作:

$ HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' |  grep -v root | head -1 | cut -d\  -f1`
$ sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache app/logs
$ sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache app/logs

由於我從頭開始擁有CentOS 7,因此我可以選擇使用它。 但是,我仍然遇到相同的問題,采用這種方法之后,這些是我嘗試過的其他選擇:

  1. 將應用程序/緩存和應用程序/日志的所有者更改為nginx:nginx
  2. 將權限更改為上述文件夾的777
  3. 驗證並重新驗證PHP是否在nginx用戶下運行,我不得不在www.conf中進行更改
  4. 如果我執行ls -Al,則表明該應用程序/緩存和應用程序/日志由nginx擁有
  5. 每次更改后重新啟動服務
  6. 完全重啟服務器
  7. 清除緩存並執行預熱,仍然
  8. 嘗試了symfony和still提供的umask選項。

因此,在所有這些選項之后,我仍然遇到相同的問題,對於其他有此問題的人,它只是遵循Symfony2准則來完成ACL和粉撲的應用。 但這種情況並非如此。

我想念什么?

附言:我仔細檢查了文件夾的權限..我以root身份進入服務器。

更新1

我從頭開始重新安裝了CentOS 7,並遵循https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-centos-7並結合使用與Symfony的配置文件建議一起,仍然出現“未捕獲的異常'RuntimeException',消息為'無法創建緩存目錄'”錯誤

您可能會遇到SELinux問題,因為CentOS 7隨SELinux默認運行。

您可以通過執行setenforce 0進行測試以查看是否可以解決問題。 如果可行,則需要將SELinux配置為允許nginx用戶寫入緩存目錄,然后重新啟用SELinux。 SELinux確實提供了一些良好的安全性,因此最好弄清楚如何正確配置它,而不是完全將其關閉。

  1. 假設您將應用程序放在/ usr / share / nginx / www目錄下,則需要添加一個本地自定義規則(策略模塊):

     semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/www/.+/app/(cache|logs)(/.*)?' 
  2. 您需要還原該目錄中所有文件的上下文:

     restorecon -Rv /usr/share/nginx/www/your-app-dir 
  3. 更改緩存和日志目錄的組,並為該組添加權限:

     chgrp -R apache /usr/share/nginx/www/your-app-dir/app/{cache,logs} chmod -R 775 /usr/share/nginx/www/your-app-dir/app/{cache,logs} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM