2011-12-09 3 views
30

私はUbuntu 11.10にSymfony 2.0.7をインストールしました。私は期待していたとしてキャッシュをクリアするときにキャッシュファイル "/var/www/myapp/app/cache/dev/classes.php"の書き込みに失敗しました

chmod 777 -R cache 
chmod 777 -R logs 

とすべての機能:

は、私は次のコマンドを使用して cache電子 logsディレクトリのパーミッションを変更:私はこの問題を抱えています。

は、次に私が作っ:

app/console cache:clear 

はキャッシュの/ dev 755への変更とsymfonyの真

権限がその中に書き込むことはできませんデバッグとのdevの環境のためのキャッシュをクリアする:

RuntimeException:キャッシュファイル "/var/www/myapp/app/cache/dev/classes.php"の書き込みに失敗しました。 ClassCollectionLoaderで1017 /var/www/myapp/app/bootstrap.php.cacheラインで/var/www/myapp/app/bootstrap.php.cacheライン1079 ClassCollectionLoader :: writeCacheFileで ()内

: :/var/www/myapp/web/app_dev.phpラインにおけるKernel-> loadClassCache()で/var/www/myapp/app/bootstrap.php.cacheライン682 における負荷()23

Symfony 2のこの明らかなバグをどうやって解決できますか?

+0

私の問題を解決しました。次に、ブラウザ内のページを初めて要求すると、 'dev'フォルダは' www-data'ユーザによって作成されます。 私は以下のFederico Galloが投稿したソリューションを使用して終了しました。 –

答えて

52

を参照してください。許可を設定するサイドノートConfiguration and Setupセクションを参照してください。 setfaclでACLアプローチを使用してください。

+1

'setfacl'とタイプすると' command not found'と表示されます。どうすればそれを取り除くことができますか? – Hunt

+0

@Hunt、 'acl'パッケージをインストールしてください。 –

+3

私の言うとおり:setfacl:オプション-m:文字の近くに無効な引数3 – Sarang

8

まあ(apacheがあなたのHTTPDユーザです)

sudo setfacl -R -m u:apache:rwX -m u:`whoami`:rwX app/cache app/logs 
sudo setfacl -dR -m u:apache:rwX -m u:`whoami`:rwX app/cache app/logs 

、私はその問題を回避するためにsetfaclを使用していますが、私はまだ問題を抱えて。 私は、標準のユーザーディレクトリに取り組んでいますので、これは私のために動作しません:

APACHEUSER=`ps aux | grep -E '[a]pache|[h]ttpd' | grep -v root | head -1 | cut -d\ -f1` 
sudo setfacl -R -m u:$APACHEUSER:rwX -m u:`whoami`:rwX app/cache app/logs 
sudo setfacl -dR -m u:$APACHEUSER:rwX -m u:`whoami`:rwX app/cache app/logs 

をあなたも、これを行う場合は、次の(もちろん、必要に応じて、権限を持つユーザーとして)

sudo rm -rf app/cache app/logs 

その後、通常のユーザーとして両方のディレクトリを作成し、(sudoをせずに)あまりにも通常のユーザーとして以下のコマンドを適用します。

exit (from root if necessary) 
mkdir app/cache app/logs 

APACHEUSER=`ps aux | grep -E '[a]pache|[h]ttpd' | grep -v root | head -1 | cut -d\ -f1` 
setfacl -R -m u:$APACHEUSER:rwX -m u:`whoami`:rwX app/cache app/logs 
setfacl -dR -m u:$APACHEUSER:rwX -m u:`whoami`:rwX app/cache app/logs 

注:thaのを覚えています2つのスペースの間に2つのスペースがある-d\-f1

幸運!私はrootユーザーとして実行する私の場合は

+0

'exit'の代わりに' sudo -k'を実行してsudo権限を残してください。 'exit'はコンソールも閉じます。 –

+0

あなたの貢献に感謝します。私が話しているユーザーは標準ユーザーです。だからそれはsudoersに追加されていません。だから私はsuとexitをした –

0

sudo -u apache app/console ca:cl 

apacheの - これは、所有者のウェブディレクトリによって異なります。あなたのWebサーバーにApacheを使用していると仮定すると、デフォルトはapacheになります。

HTTPDUSER = ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1

sudoのは、setfacl -R -mu: "$ HTTPDUSER" 私はこのページに

http://symfony.com/doc/current/setup/file_permissions.html

を得たあなたの記事を見ることによって

0

は、その後、私はこれをしませんでした:rwX -mu:whoami:rwX var

sudo setfacl -dR -mu: "$ HTTPDUSER":rwX -mu:whoami:RWXのVAR

そして、それは私が `dev`フォルダがCLIユーザによって作成されませんので、キャッシュをクリアしている場合、` --no-warmup`を追加することによって、この問題を回避

関連する問題