2016-04-15 118 views
1

我在OSX上運行Docker容器。容器包括:在Docker環境中運行Symfony時的文件夾權限

  1. Symfony的
  2. Nginx的
  3. PHP-FPM
  4. Redis的

這是一個很常見的配置運行Symfony的應用程序。

我遇到了一些奇怪的文件夾權限問題,我得到這個錯誤: error screenshot

我的Symfony可以創建一個文件夾

/var/www/var/chache 

,但隨後不能寫進去。 一旦緩存文件夾中創建,文件夾的權限設置爲這樣:

文件夾的
10344 drwxr-xr-x 1 1000 staff 68 Apr 15 00:33 cache 

老闆是我的地方OSX用戶,其中泊塢窗下運行。 我試圖在Docker中更改Symfony的CLI中的文件夾權限或所有者,但它沒有任何效果。 我試圖在我的本地控制檯下登錄chmod -R 777,權限被更改,但Symfony在緩存文件夾內創建了文件夾,無法再次寫入它。

我也試過在app_dev.php禁用緩存:

$kernel = new AppKernel('dev', true); 
// $kernel->loadClassCache(); 
$request = Request::createFromGlobals(); 

而且在config.yml:

twig: 
    cache:  false 

什麼都沒有效果,所以我在這裏丟失。

任何想法如何解決問題?

+0

我覺得想後是有點與我的問題,但並沒有真正解決這個問題:https://github.com/boot2 docker/boot2docker/issues/581 –

+0

剛剛在Ubuntu虛擬機箱中運行同樣精確的Docker集合 - 一切正常,所以我猜測它與OSX-Docker權限問題有關 –

回答

1

您還沒有表現出你Dockerfile,因爲這樣我可以給你容器的例子用PHP-FPM這哪裏問題是固定的:

該行固定權限錯誤:usermod -u 1000 www-data

FROM debian:jessie 
RUN apt-get update 
RUN apt-get install -y curl \ 
         mcrypt \ 
    && apt-get install -y php5 \ 
         php5-fpm \ 
         php5-cli \ 
         php-pear \ 
         php5-common \ 
         php5-igbinary \ 
         php5-json \ 
         php5-mysql \ 
         php5-mysqlnd \ 
         php5-gd \ 
         php5-curl \ 
         php5-dev \ 
         php5-sqlite \ 
         php5-memcached \ 
         php5-memcache \ 
    && usermod -u 1000 www-data 

EXPOSE 9000 
+0

它對我有用。這種簡單的解決方案!非常感謝您的幫助。 –

+0

您可以添加解釋嗎?所以'usermod'將'www-data'用戶的ID設置爲'1000',是嗎?這是如何幫助解決許可問題?謝謝。 – Andru

0

查看官方文檔here

我在Ubuntu和解決權限問題我執行這個命令:

$ sudo setfacl -R -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs 
$ sudo setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs