web-dev-qa-db-ja.com

Drupal 7 on IIS 6で生成されない画像スタイル

さまざまな画像スタイルを使用して画像をiPhoneにエクスポートするサイトを開発しました(XMLエクスポートドキュメントからリンクされています)。これは、Linux/Apacheを搭載した自分の開発サーバーで完全に問題なく動作しました。

このサイトは現在、Windows/IIS6を使用する共有ホスティング環境でホストされています。 (ええ、奇妙です。あなたが推測できるように、それは私の決定ではありません;))

ここでの問題は、新しい画像(既存の画像が機能する)のimage_style URLが404エラーページにつながり、IISが直接提供することです。ただし、クリーンなURLはそのままで問題なく機能し、「通常の」404ページがDrupalによって表示されます。

そのため、 http://example.org/does_not_exist のようなURLは、Drupalで提供されるが http:// example.org/sites/default/files/styles/command_image/public/Chrysanthemum_0.jpg は、IIS 404ページを示しています。

サイトはこれらのイメージにパブリックファイルシステムを使用しており、パスは正しいです。サーバーへの最初の展開中に、サイトの残りの部分と一緒にアップロードした既存のイメージでは問題なく機能します。

何か考えはありますか?

3
Berdir

わかりました。

問題は、2つの.htaccessファイルがあることでした。 1つはトップレベルにあり、ほとんどの設定が含まれています。もう1つは、セキュリティ関連(phpファイルなどの実行を避けます)であり、これだけが含まれています。

SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
Options None
Options +FollowSymLinks

今の違いは、Apacheでは両方のファイルが結合されているようです(sites/default/filesのファイルは最上位のファイルからすべてを継承します)。これは、Apache/IIS .htaccessを互換的に処理するように見えるISAPI_Rewriteモジュールでは発生しません。

トップレベルのコンテンツを直接、sites/default/filesの既存のコンテンツの下のファイルにコピーすることで、これを修正しました。さらに、RewriteBaseを変更して、index.phpファイルが正しいディレクトリに含まれるようにする必要がありました。

変更された.htaccessファイルのヘッダーは次のようになります。

# From the original .htaccess file, do not remove.

SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
Options None
Options +FollowSymLinks

#
# Apache/PHP/Drupal settings:
# (copied from /.htaccess)
#

Content of the top level .htaccess file here comes here...

そして、私が変更した部分は次のようになります:

# Modify the RewriteBase if you are using Drupal in a subdirectory or in a
# VirtualDocumentRoot and the rewrite rules are not working properly.
# For example if your site is at http://example.com/drupal uncomment and
# modify the following line:
RewriteBase /YOURFOLDERHERE

Drupalがサブディレクトリにインストールされている場合は、フォルダ名を挿入します。そうでない場合は、この部分をコメント化しておくことができます。

(http://www.caspianit.co.uk/imagecache-wrong-path/ の(不必要に長い)ブログ投稿のおかげで、これを見つけました。

注:sites/default/filesdidで.htaccessファイルを削除するだけでも機能しますが、セキュリティ関連のSetHandler設定が削除されます。しかし、これがIISとにかく効果があるとは思えません...

3
Berdir

/sites/default/files/styles/command_image/public/Chrysanthemum_0.jpgはファイルシステムに存在しますか?その場合、画像の取得中に権限の問題が発生する可能性があります。そうでない場合、画像の生成と書き込み中に権限の問題が発生する可能性があります。 Drupalログページにエラーがありますか?

1