3

これが問題です。

app/cacheフォルダーにストアをキャッシュします。現在、開発環境で作業しており、キャッシュはapp/cache/devフォルダーに保存されています。symfony コンソール コマンドを使用してキャッシュをクリアすると、問題が発生します。

php アプリ/コンソール キャッシュ:クリア

プロジェクトのlocalhost/symfony/dev_app.phpを読み込もうとすると、エラーが表示されます:

RuntimeException: キャッシュ ファイルの書き込みに失敗しました

Debian は chmod a+ をサポートしていないため、setfacl拡張機能をインストールしました。

最初に、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

私が理解しているように、このコマンドは app/cache フォルダーとその現在および新しいサブフォルダーとファイルに対するユーザー ahmed のデフォルトのアクセス許可を設定します。

私のコンソールでは、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" の書き込みに失敗しました。

それで、私は何を間違っていますか?

app/cache/devの getfacl のリストは次のとおりです。

ahmed@ahmed:/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
4

1 に答える 1

5

Web サーバー グループ (おそらくwww-data) はキャッシュに書き込める必要があり、ユーザーも同様です。ユーザー (ahmed) は www-data グループのメンバーである必要があります (グループ メンバーシップを有効にするには、再度ログインする必要があることに注意してください)。app/cache と app/logs にsetgidビット ( ) を設定すると、ユーザーがそれらの中で作成したファイルとディレクトリが によってグループの所有権を維持することが保証されます。によって作成されたファイルがグループの所有権を維持するように、行のコメントを外し、あなたのユーザーが 0002 の umask を持っていることを確認します (表示または設定するには、プロンプトで入力し、ログイン時にこれを設定するためのヘルプを検索します)。何かのようなもの:+swww-dataumask(0002)app_dev.phpwww-dataumaskumask 0002

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

ユーザー ahmed が wi​​th が所有するディレクトリ内にファイル/ディレクトリを作成するahmed.www-data+s、それらも が所有していることがわかりますahmed.www-data

于 2013-05-16T15:55:18.517 に答える