サムネイル、中、大画像の作成に失敗しました


10

Drupal 7.10の新規インストールを使用する場合、公開アップロード用のディレクトリをに設定しましたsites/uploads

次に、コンテンツインスタンスに画像を追加すると、元の画像がsites/example.org/files/imagename.png期待どおりにアップロードされます。ただし、その他の画像(サムネイル、中、大)はで作成されませんsites/example.org/styles/*

このディレクトリは、PHP5-FPMユーザーが読み取りおよび書き込み可能であるため、賢明な問題の権限があってはなりません。

なぜこれが起こるのですか?どうすれば修正できますか?


nginxをウェブサーバーとして使用している場合は、vhostで追加の設定が必要です。詳細については、こちらをご覧ください:drupal.org/node/1048570#comment-4047984
Gnuget

回答:


13

答えは、実際、私が思っていたよりも少し微妙です。D7のimagecache交換はnginx仮想ホストで注意が必要であることがわかります。不足しているファイルのために404がDrupalに送信されない場合、画像は作成されません。アップロード時に作成されたと想定していたため、最初は気付かなかったものです。

location @rewrite {
    rewrite ^/(.*)$ /index.php?q=$1;
}

location ~ ^/sites/.*/files/styles/ {
    try_files $uri @rewrite;
}

サーバー定義に追加する必要があり、ロールする準備ができているはずです。明らかに、パスは設定に応じて変更する必要があるかもしれませんが、私の場合はそうでした。


1
これが機能するためには、@ rewrite部分を構成ファイルの他の場所で適切に定義する必要があることに注意してください。そうは言っても、それはすでに私のものであり、これによって私の問題も解決されたので、jvc26に感謝します:)
El Yobo

@ElYobo良い点-明確にするために答えを更新しました。ありがとう
jvc26

これはnginxリバースプロキシ設定に影響しますか?私は同じ問題を抱えていますが、これはそれを修正するようには見えません。
Grizly 2014

アップロード時にそれらを作成する場合は、drupal.org / project / imageinfo_cacheで作成できます
mikeytown2

良いキャッチ。これにより、DigitalOceanがワンクリックのDrupalインストールで自動的に構成するファイルではなく、nginxの推奨サーバーファイルを使用するようになりました。
Meglio 2016

2

必ず、admin / config / media / file-systemでパブリックファイルシステムパスと一時パスの両方を確認してください。

これらのフォルダーの両方に適切なアクセス許可を設定すると、ファイルを保存するとサブフォルダーが自動的に作成され、画像が保存され、エラーメッセージが消えます:-)


2

私の場合、画像がhttpsを使用してフェッチされたため、問題が発生していました。

安全なページ設定に次の行を追加して、ファイルパス上のhttpsを無視しました。

*/files/*

これが誰かを助けることを願っています。:)


1

アクセス許可を確認したとおっしゃっていますが、私がこの問題を頻繁に経験しているので、それから始めます。ほとんど常にアクセス許可の問題でした。

一般的なアドバイス: まず、admin / config / media / file-systemに移動し、[構成を保存]をクリックします。これにより、Drupalは設定されたディレクトリの権限を再評価し、問題が見つかった場合はエラーメッセージを表示します。

次に、phpユーザーではなく、Webサーバーを所有するApache、www-data、またはその他のユーザーがいると思いますか?LinuxまたはMacシステムでは、そのユーザーにsudoを実行します。適切なユーザーとしてファイルを書き込もうとすることが、適切なアクセス許可を確実に得る最善の方法です。sites / domain.com / files /に移動し、「echo data> new_file; cat new_file;」を呼び出します。ターミナルで。これにより、実際に書き込みディレクトリに書き込むことができることが確認されます。tmp dirでも同じようにします。うまくいけば、他の誰かがWindowsのようなシステムで同じアクションを実行する方法を提案できます。

3番目:ディレクトリのアクセス許可を除外するには、ファイルディレクトリを再帰的に適用します。あなたは後でより健全な権限を復元することができます

find . -type d -print0 | xargs -0 chmod 755
find . -type f -print0 | xargs -0 chmod 644

4番目:完全な権限を持つtmpディレクトリーがあることを確認します。

5番目:今までにコードを理解している場合は、コードのデバッグを開始する必要があるかもしれません。


提案をありがとう:すでに上記を試したことがあり、ファイルシステムの変更に関するDrupalからのエラーがないため、権限は適切である必要があります。PHPプロセスはすべて、そのディレクトリに書き込むことができるユーザーとして実行されるため、Webサーバーを実行するユーザーは、書き込み機能に影響を与えません。書き込みと互換性のある権限を手動で確認しました。/ tmpは通常の777なので、書き込みの問題はありません。パスの不一致は、私の側の間違いでした。
jvc26 2012年

ヘッドアップとして、この問題はnginx構成の1つであり、404をDrupalに渡すと、サムネイルの作成をトリガーする問題がありました。
jvc26

1

Letharionの回答を完了するために、サムネイル、中程度の画像スタイルを作成するために使用した方法を以下に示します。

上記のすべてのポイントを最初にチェックしたが、結果は出なかった。

次に(Linux OSの場合)/usr/local/etc/suphp.confを編集してphpのumask変更し、最大755のアクセス権を持つファイルとディレクトリを作成できるようにしました(最大744でした)。

そして、これは間違いなく問題を解決しました。:)


0

GPコードライブラリサーバーに大きなサイズの画像をアップロードするときに、phpでサムネイル画像を作成します。アップロードされた大きな画像は、ウェブページへの読み込みに時間がかかるため、小さなサイズの画像をウェブページに表示する必要があります。画像サムネイルは、アップロードされた画像のサムネイルを生成して、当社のWebサイトに必要なサイズの画像を表示するソリューションです。 http://codelibrary.googleplus.co.in/create-thumbnail-image-by-php/


0

私はDrupal 8.0.3を使用しています。
私の場合、このフォルダはインストール時に生成されません。

sites/default/files/field/image

したがって、私は古いバージョンのDrupalインストールからコピーして配置しました。
サムネイル、中、大を含むすべての画像が表示されます。


-1

ルートとファイルディレクトリにある.htaccessファイルを確認します。必要に応じて、新しい.htaccessファイルに置き換えます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.