web-dev-qa-db-ja.com

Drupalキャッシュが少ないと、Apacheサーバーへのアクセスを許可するキャッシュファイルが生成され続けます

自動生成されたcssキャッシュファイル(Lessモジュールに関連)が、サーバーがアクセスするために必要な権限で生成されていることを確認するにはどうすればよいですか。

現在、すべてのキャッシュを(drush cc allを使用して)クリアすると、サイトのすべてのCSSスタイルが失われ、次のエラーが発生します。

LESSは、sites/default/files/less/52741f7e343834.56376384/sites/all/themes/my_custom_theme/cssにディレクトリを作成できませんでした

ls -l内のファイルの権限(sites/default/files/less)を見に行くと、ディレクトリ52741f7e343834.56376384(サーバーが他のものを作成しようとしている新しいキャッシュファイルだと思います) in)所有権が<correct-user>:<correct-user>ではなく<correct-user>:Apacheになっている(centosなので、Apacheサーバーグループです)。他のすべてのキャッシュディレクトリには、正しい所有者権限があります。

では、システムがこれらのキャッシュファイルを適切に作成し、スタイルを元に戻すためにキャッシュをクリアするたびにファイルの所有権を設定する必要がないようにする方法を教えてください。

これは私のサイトの新しい問題であり、Drupal 6のLessモジュールを更新し、lessphpライブラリをサイトに追加したためと思われます(たぶん私は間違っていますが)。

3
roy

私は3つのことを行います。

  1. 私は自分をApacheグループに入れました。
  2. 私のumaskとhttpdプロセスを0022に設定します
  3. chmod sites/default/filesを2775に

最初のステップでは、ディレクトリに書き込むことができます。 2番目のステップでは、私が作成するファイルにグループ書き込み権限があり、Apacheも同じことを確認します。 3番目のステップでは、常にディレクトリ所有者のグループを使用するようにOSに指示します。

その後、cc allをDrushして、ApacheにLESSファイルを作成させることができます。

最初の修正では、パーマを再帰的に修正する必要がある場合があります。例えば、

chown -R Apache.apache docroot/sites/default/files/
find docroot/sites/default/files/ -type d -exec chmod 2775 {} \;
find docroot/sites/default/files/ -type f -exec chmod 664 {} \;

ファイルのアクセス許可と所有権の保護 もお勧めします。コメントは、setgidビットと潜在的な没落について良い議論があります。

1
mpdonadio