web-dev-qa-db-ja.com

drush cc all!= "すべてのキャッシュをフラッシュ"

私がdrupalサイトのキャッシュをdrush cc allコマンドを使用してキャッシュしようとした場合-コマンドは正常に完了しますが、ブラウザでdrupalサイトをプルアップすると、 CSSがないため、混乱します。

一方、管理者として自分のサイトにサインインした場合、[すべてのキャッシュをフラッシュ]に移動すると、サイトは正常に機能します。

これについては、ここで簡単に説明します。 http://dnotes.net/blog/dark-side-drop/david/why-all-my-css-gone-drush-cc

私は本当に解決策を見ていませんが。

根本的な問題は、drush cc allがLESS CSSファイルを再作成していないことですが、「Flush All Caches」はそうですか?キャッシュをクリアした後、drushでLESSファイルを再作成する方法はありますか?

ありがとうブラッド

6
Brad

UIとdrushを使用してキャッシュをクリアすると、どちらも drupal_flush_all_caches() を呼び出しますが、微妙な違いがあります。

UIから実行すると、PHPはApacheとして実行されます(ただし、Webサーバーが構成されています)。drushから実行すると、コマンドを実行したユーザーとして実行されます。

あなたの場合の問題は LESS module がcron関数を実行し、sites/default/filesの少ないディレクトリをクリアして新しいディレクトリを作成することです。これが発生すると、多くの場合、アクセス許可の問題が発生します。drushユーザーはlessディレクトリを所有しており、Apacheはそれに書き込むことができません。したがって、CSSファイルは再生成されず、サイトのスタイルが崩れます。

私の解決策は、drushユーザーが私のサーバーのApacheグループにも含まれていること、および私のsites/default/filesディレクトリに2775のアクセス許可があり、Apache:apacheによる所有権があることを確認することです。 httpdのumask で物事を書き込み可能にすることも確認します。

これにより、作成されるすべてのファイルとディレクトリが常にApacheによるグループの所有権を持ち、Apacheがhttpdまたはコマンドラインのどちらで行われたかに関係なく、作成されたすべてのディレクトリに書き込むことができます。

編集:

注目に値するもう1つの違いがあります。 Drushでクリアするときは、キャッシュをクリアするだけです。 UIからクリアすると、キャッシュがクリアされ、ページがリロードされます。ページがコールドキャッシュからリロードされると、そのページの再構築に使用された部分が再びキャッシュされます。これには、LESSソースからのCSSファイルの作成が含まれます。

16
mpdonadio

現在は7.x-3.0-rc1である3.0ブランチを使用できます。

Drushを介した3.0バージョンでは、キャッシュがクリアされたディレクトリのみが削除され、ディレクトリは再作成されないため、DrushがWebサーバーとして別のユーザーで実行される問題が回避されます。

ディレクトリはLESSモジュールによってオンデマンドで作成されるため、ユーザーがWebサーバーを介してページをリクエストした場合のみ、ディレクトリはWebサーバーユーザーの下に作成されます。

完全な7.x-3.0リリースがまもなくリリースされます(できれば今週)。

1
corey.aufang