Fehler beim Erstellen von Miniaturbildern, mittleren und großen Bildern


10

Bei Verwendung einer Neuinstallation von Drupal 7.10 habe ich das Verzeichnis für öffentliche Uploads auf festgelegt sites/uploads.

Wenn ich dann einer Inhaltsinstanz ein Bild hinzufüge, wird das Original sites/example.org/files/imagename.pngwie erwartet hochgeladen . Die anderen Bilder (Miniaturansicht, mittel und groß) werden jedoch nicht bei erstellt sites/example.org/styles/*.

Das Verzeichnis ist für den PHP5-FPM-Benutzer lesbar und beschreibbar, daher sollte es keine Problemberechtigungen geben.

Warum passiert das? Wie kann ich es reparieren?


Wenn Sie nginx als Webserver verwenden, benötigen Sie eine zusätzliche Konfiguration in Ihrem vhost. Weitere Informationen finden Sie hier: drupal.org/node/1048570#comment-4047984
Gnuget

Antworten:


13

Richtig, die Antwort ist tatsächlich etwas subtiler als ich dachte. Es stellt sich heraus, dass der imagecacheErsatz von D7 in Ihrem Nginx-Vhost einige Aufmerksamkeit erfordert. Ohne dass die 404s für die fehlenden Dateien an Drupal gesendet werden, werden die Bilder nicht erstellt - etwas, das ich anfangs nicht realisiert habe, da ich angenommen hatte, dass sie beim Hochladen erstellt wurden.

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

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

Es muss zu Ihrer Serverdefinition hinzugefügt werden, und Sie sollten bereit sein, zu rollen. Natürlich muss der Pfad für Ihr Setup möglicherweise geändert werden, für mich jedoch.


1
Beachten Sie, dass der @rewrite-Teil an anderer Stelle in der Konfigurationsdatei entsprechend definiert werden muss, damit dies funktioniert. Das heißt, es war bereits in meinem und dies löste auch mein Problem, also danke jvc26 :)
El Yobo

@ ElYobo guter Punkt - habe die Antwort aktualisiert, um sicherzustellen, dass das klar ist. Danke
jvc26

Würde sich dies auf eine Nginx-Reverse-Proxy-Konfiguration auswirken? Ich habe das gleiche Problem und das scheint das nicht zu beheben.
Grizly

Wenn Sie möchten, dass sie beim Upload erstellt werden, macht drupal.org/project/imageinfo_cache das
mikeytown2

Guter Fang. Dies führte mich schließlich dazu, die von nginx empfohlene Serverdatei anstelle der von DigitalOcean automatisch mit einer Drupal-Installation mit einem Klick konfigurierten zu verwenden.
Meglio

2

Überprüfen Sie sowohl den Pfad des öffentlichen Dateisystems als auch den temporären Pfad unter admin / config / media / file-system

Sobald ich beide Ordner mit den richtigen Berechtigungen eingerichtet habe, werden meine Unterordner automatisch erstellt, wenn ich eine Datei speichere, das Bild gespeichert wird und die Fehlermeldung nicht mehr angezeigt wird :-)


2

In meinem Fall wurde das Problem verursacht, weil die Bilder mit https abgerufen wurden.

Ich habe die folgenden Zeilen in den Einstellungen für sichere Seiten hinzugefügt, um https in Dateipfaden zu ignorieren.

*/files/*

Hoffe das hilft jemandem. :) :)


1

Während Sie sagen, dass Sie Berechtigungen überprüft haben, würde ich immer noch dort anfangen, da ich dieses Problem häufig selbst hatte und es fast immer ein Berechtigungsproblem war.

Allgemeine Hinweise: Gehen Sie zunächst zu admin / config / media / file-system und klicken Sie auf "Konfiguration speichern". Dies führt dazu, dass Drupal die Berechtigungen der festgelegten Verzeichnisse neu bewertet und Fehlermeldungen ausgibt, wenn ein Problem festgestellt wird.

Zweitens: Ich gehe davon aus, dass Sie einen Apache oder WWW-Daten oder andere Benutzer haben, denen der Webserver gehört, im Gegensatz zum PHP-Benutzer? Auf einem Linux- oder Mac-System sudo an diesen Benutzer. Der Versuch, eine Datei als der richtige Benutzer zu schreiben , ist der beste Weg, um wirklich sicherzustellen, dass Sie über die richtigen Berechtigungen verfügen. Gehen Sie zu sites / domain.com / files / und rufen Sie "echo data> new_file; cat new_file;" auf. in einem Terminal. Dadurch wird überprüft, ob Sie tatsächlich in das Schreibverzeichnis schreiben können. Machen Sie dasselbe mit Ihrem tmp-Verzeichnis. Hoffentlich kann jemand anderes vorschlagen, wie dieselben Aktionen auf einem System wie Windows ausgeführt werden sollen.

Drittens: Um Verzeichnisberechtigungen auszuschließen, wenden Sie das Dateiverzeichnis rekursiv an. Sie können anschließend mit vernünftigeren Berechtigungen wiederherstellen

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

Viertens: Stellen Sie sicher, dass das tmp-Verzeichnis über vollständige Berechtigungen verfügt.

Fünftens: Möglicherweise müssen Sie mit dem Debuggen des Codes beginnen, wenn Sie es inzwischen herausgefunden haben.


Vielen Dank für die Vorschläge: Habe bereits oben versucht, keine Fehler von Drupal beim Dateisystemwechsel, daher müssen Berechtigungen in Ordnung sein. PHP-Prozesse werden alle als Benutzer ausgeführt, der in dieses Verzeichnis schreiben kann, sodass der Benutzer, auf dem der Webserver ausgeführt wird, keinen Einfluss auf die Schreibfähigkeit hat. Haben manuell Berechtigungen überprüft, die mit dem Schreiben kompatibel sind. / tmp ist wie üblich 777, daher gibt es dort keine Schreibprobleme. Die Pfaddiskrepanz wurde sortiert. Dies war ein Fehler von meiner Seite.
JVC26

Als Heads-up war das Problem eines der Nginx-Konfigurationen, mit Problemen bei der Übergabe von 404s an Drupal, die wiederum die Erstellung von Miniaturansichten auslösen.
JVC26

1

Um die Antwort von Letharion zu vervollständigen, habe ich folgende Methode verwendet, um Miniaturbilder, mittlere ... Bildstile zu erstellen.

Ich habe genau gesagt, dass ich zuerst alle oben aufgeführten Punkte ohne Ergebnis überprüft habe.

Dann (unter einem Linux-Betriebssystem) habe ich /usr/local/etc/suphp.conf bearbeitet , um umask auf PHP zu ändern , sodass Dateien UND Verzeichnisse mit maximal 755 Berechtigungen erstellt werden konnten (maximal 744).

Und das hat das Problem definitiv gelöst. :) :)


0

GP Code Bibliothek Miniaturbild per PHP erstellen Wenn wir große Bilder auf den Server hochladen. Das Hochladen großer Bilder dauert länger, bis sie auf die Webseite geladen sind. Daher müssen wir kleine Bilder auf unserer Webseite anzeigen. Die Miniaturansicht des Bildes ist eine Lösung zum Generieren der Miniaturansicht des hochgeladenen Bildes, um Bilder in der erforderlichen Größe auf unserer Website anzuzeigen. http://codelibrary.googleplus.co.in/create-thumbnail-image-by-php/


0

Ich bin auf Drupal 8.0.3.
In meinem Fall wird dieser Ordner bei der Installation nicht generiert.

sites/default/files/field/image

Also habe ich es durch Kopieren von der älteren Version der Drupal-Installation ausgedrückt.
Alle Bilder, einschließlich Miniaturbild, Mittel und Groß, werden jetzt angezeigt.


-1

Überprüfen Sie Ihre .htaccess-Datei im Stammverzeichnis und im Dateiverzeichnis. Bei Bedarf durch die neue .htaccess-Datei ersetzen

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.