Linux で Symfony2 をデプロイした後、app/logs または app/cache ディレクトリに書き込み権限がないというエラーが表示される場合がありますにアクセスするとき。 Linux では、コマンドラインからログインするユーザーが Web アプリケーションサーバー (Apache、nginx など) のユーザーと異なる場合、
この問題を解決するには、次の 4 つの方法を使用できます。
1. chmod +a をサポートするシステムで ACL を使用します
Linux システムの多くのバージョンは chmod +a コマンドをサポートしているため、最初にこのコマンドを使用します。 Web アプリケーション サーバーのユーザー名を検索し、変数 HTTPDUSER に割り当てます。
リーリーコマンドの 4 行目は、Web アプリケーション サーバーのユーザー名を検索し、変数 HTTPDUSER に割り当てます。コマンドの 5 行目は、Web アプリケーション サーバーにディレクトリの読み取り、書き込み、作成などの権限を付与します。 app/logs または app/cache ディレクトリ; 6 行目 コマンドは次のとおりです: app/logs または app/cache ディレクトリに対する読み取り、書き込み、ディレクトリの作成などの権限をコマンド ライン ログイン ユーザーに付与します。
2. システムが chmod +a をサポートしていない場合は、setfacl コマンドを使用して ACL を設定します
まず、ディレクトリが配置されているパーティションが ACL をサポートしており、setfacl コマンドがインストールされていることを確認してください。
リーリーうまくいかない場合は、コマンドの2行目と3行目に-nオプションを追加してください。
3. ACLを使用しないでください
ACL を使用していない場合は、これら 2 つのディレクトリ内のユーザー グループがファイルを作成および変更する権限を持つように umask を変更することもできます (775、Web アプリケーション サーバーとコマンド ライン ユーザーは同じグループに属します)。すべてのユーザーはファイルを作成および変更する権限 (777) を持っていますが、どちらの権限セットも安全ではなく、与えられた権限が高すぎます。次のコードを app/console
app/console
, web/app.php
和 web/app_dev.php
、web/app.php
web/app_dev.php
リーリー
注: PHP の umask コマンドはスレッドセーフではありません。
4. コマンドラインからログインするユーザーとWebアプリケーションサーバーのユーザーは同一ユーザーです。