2013-04-04 13 views
11

私のキャッシュをクリアしようとすると、Symfony 2のウェブサイトで最近問題が発生しています。 私はターミナルで次のコマンドを入力し、symfony 2のキャッシュクリアの問題

[ErrorException]                                                         
Warning: rename(/var/www/corpsite/corpsite/app/cache/dev,/var/www/corpsite/corpsite/app/cache/dev_old): Directory not empty in /var/www/corpsite/corpsite/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php line 74 

だから私は777に、そのファイルのパーミッションを変更し、再実行キャッシュをクリアコマンド:

php app/console cache:clear --env=dev 

をし、次のエラーを取得しますこれは私は、このエラーを与える:

[ErrorException]                                                       
    Warning: unlink(/var/www/corpsite/corpsite/app/cache/dev_old/twig/6b/e9/4491e41b895786689b86f32f446f.php): Permission denied in /var/www/corpsite/corpsite/vendor/symfony/src/Symfony/Component/HttpKernel/Util/Filesystem.php line 100 

私は「dev_old」フォルダを削除することで問題ラウンドを取得することができますが、私は、問題を引き起こしている問題を解決したいです。

P.S - サイトが開発モードで動作していることを認識しています。このサイトは10ヶ月間生存しており、今まで問題となったことはありません。

ご協力いただきましてありがとうございます。

+0

だけdev_oldフォルダを削除して、コマンドを実行します再び。 – Squazic

+0

"私は 'dev_old'フォルダを削除して問題を解決することができますが、問題の原因となっている問題を解決したいと思います。 – qooplmao

+0

「root」でコマンドを実行していますか? (または 'sudo') – cheesemacfly

答えて

31

キャッシュ&ログフォルダの両方にアクセス権を取得する必要があります。

:それはchmodの+をサポートしている場合

:お使いのOSに応じて、いくつかの方法は、(ApacheのユーザーとWWW-データを置き換える)がありhttp://symfony.com/doc/current/book/installation.html#configuration-and-setup

:、あなたがここに与えられた指示に従うことができることを行うために、エルス

$ rm -rf app/cache/* 
$ rm -rf app/logs/* 

$ sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs 
$ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs 

、それはは、setfaclをサポートしている場合(https://help.ubuntu.com/community/FilePermissionsACLsを参照してください):

エルス
$ 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 

、アプリ/コンソールの初めにこれらの行を入れて、ウェブ/ app.php &ウェブ/ app_dev.php(推奨されません):

umask(0002); // This will let the permissions be 0775 

// or 

umask(0000); // This will let the permissions be 0777 
+1

ありがとうございます。私はapp/cache/dev_oldフォルダを削除した後、2番目のコマンドセット(setfacl)を使用していました。 – richelliot

+0

@ hugo-briand、なぜumask(0002)を推奨しないのですか?セキュリティの問題? –

+0

symfonyインストールで示された表示から、このメソッドはスレッドセーフではありません。つまり、スクリプト(fpmやクエリ+ CLIなど)を使用してスクリプトに並列アクセスすると、問題が発生する可能性があります。 PHP umask doc(http://php.net/manual/en/function.umask.php)から:この関数をマルチスレッドのWebサーバで使用しないでください。ファイルを作成した後は、chmod()でファイルのパーミッションを変更する方が良いでしょう。 umask()を使用すると、同時に実行されるスクリプトとWebサーバー自体が予期しない動作をする可能性があります。それらはすべて同じumaskを使用するためです。 –

-4

あなたは、両方のキャッシュ&ログフォルダ上のアクセス権を取得する必要があります。これを行うには、あなたはここで与えられた指示に従うことができます:キャッシュとSymfony3フォルダ内

+1

ここで、:)あなたがそのリンクを投稿する前に、リンクが無効になる可能性があるので、リンクを投稿して回答自体に関連するコンテンツを置く方が良いでしょう。 –

2

varappから移動し、そのコマンドは次のようになります。

$ rm -rf var/cache/* 
$ rm -rf var/logs/* 
$ sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" var/cache var/logs 
$ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" var/cache var/logs 
+0

私はSymfony 2の使用をやめました。もう1つは見逃しません。それは容易なものを困難にし、困難なものを容易にします。すべてのプロジェクトは頭痛でした。 Symfony3とは何ですか? – richelliot