Küçük resim, orta ve büyük resimler oluşturulamıyor


10

Drupal 7.10'un yeni bir kurulumunu kullanırken, genel yüklemeler için dizini ayarladım sites/uploads.

Daha sonra bir içerik örneğine resim eklediğimde, orijinali sites/example.org/files/imagename.pngbeklendiği gibi yüklerim. Ancak, diğer resimler (küçük resim, orta ve büyük) adresinde oluşturulmaz sites/example.org/styles/*.

Dizin PHP5-FPM kullanıcısı tarafından okunabilir ve yazılabilir, bu nedenle herhangi bir sorun izni olmamalıdır.

Bu neden oluyor? Nasıl düzeltebilirim?


Web sunucusu olarak nginx kullanıyorsanız,
hayaletinizde

Yanıtlar:


13

Doğru, cevap aslında fark ettiğimden biraz daha incelikli. D7'nin imagecachedeğiştirilmesinin nginx hayaletinizde biraz dikkat gerektirdiği ortaya çıkıyor . 404'ler eksik dosyalar için Drupal'a gönderilmeden görüntüler oluşturulmaz - yükleme sırasında oluşturulduğunu varsaydığım için başlangıçta fark etmediğim bir şey.

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

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

Sunucu tanımınıza eklenmelidir ve aktarmaya hazır olmalısınız. Açıkçası, yolun kurulumunuz için değiştirilmesi gerekebilir, ancak benim için öyleydi.


1
@Rewrite parçasının çalışması için yapılandırma dosyasında başka bir yerde uygun şekilde tanımlanması gerektiğini unutmayın. Yani, zaten benim oldu ve bu da benim sorunum çözüldü, teşekkürler jvc26 :)
El Yobo

@ElYobo iyi bir nokta - açık olduğundan emin olmak için cevabı güncelledik. Teşekkürler
jvc26

Bu bir nginx ters proxy yapılandırmasını etkiler mi? Ben de aynı sorunu var ve bu düzeltmek için görünmüyor.
Grizly


İyi yakalama. Bu, sonunda DigitalOcean'ın tek tıklamayla Drupal kurulumuyla otomatik olarak yapılandırdığı dosya yerine nginx'in önerilen sunucu dosyasını kullanmamı sağlıyor.
Meglio

2

Admin / config / media / dosya sisteminde hem genel dosya sistemi yolunu hem de geçici yolu kontrol ettiğinizden emin olun.

Bu klasörlerin her ikisini de doğru izinlerle ayarladıktan sonra, bir dosyayı kaydettiğimde alt klasörlerim otomatik olarak oluşturulur, görüntü kaydedilir ve hata mesajı gitti :-)


2

Benim durumumda, sorun https kullanılarak getirildiği için soruna neden oluyordu,

Dosya yollarındaki https'yi yoksaymak için güvenli sayfa ayarlarına aşağıdaki satırları ekledim.

*/files/*

Umarım bu birine yardımcı olur. :)


1

İzinleri kontrol ettiğinizi söyleseniz de, sık sık bu sorunu yaşadığım için hala başlayacağım yerdi ve neredeyse her zaman bir izin sorunu oldu.

Genel öneri: Her şeyden önce admin / config / media / dosya sistemine gidin ve "Yapılandırmayı kaydet" i tıklayın. Bu, Drupal'ın ayarlanan dizinlerin izinlerini yeniden değerlendirmesine neden olur ve bir sorun bulursa size hata iletileri verir.

İkincisi: Ben php kullanıcı aksine, web sunucusu sahibi bir apache, www-veri, ya da diğer kullanıcılar varsayalım? Bir Linux veya Mac sisteminde bu kullanıcıya sudo uygulayın. Bir dosyayı doğru kullanıcı olarak yazmaya çalışmak , doğru izinlere sahip olduğunuzdan emin olmanın en iyi yoludur. Sites / domain.com / files / adresine gidin ve "echo data> new_file; cat new_file;" bir terminalde. Bu, yazma dizinine gerçekten yazabileceğinizi doğrular. Aynı şeyi tmp dir ile yapın. Umarım bir başkası aynı eylemleri pencereler gibi bir sistemde nasıl gerçekleştireceğini önerebilir.

Üçüncü olarak: Dizin izinlerini dışlamak için, 777 dosya dizinini özyineli olarak uygulayın. Daha sonra daha fazla aklı başında iznini

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

Dördüncü: Tam izinlere sahip olan tmp dizininin olduğundan emin olun.

Beşinci: Şimdiye kadar çözdüyseniz kodda hata ayıklamaya başlamanız gerekebilir.


Öneriler için teşekkürler: Yukarıda zaten denedim, dosya sistemi değişikliği Drupal hiçbir hata, bu yüzden izinleri iyi olmalıdır. PHP işlemlerinin tümü bu dizine yazabilen kullanıcı olarak çalışır, böylece web sunucusunun çalıştığı kullanıcı yazma yeteneğinde bir fark yaratmaz. Yazma ile uyumlu izinleri manuel olarak kontrol et. / tmp her zamanki gibi 777 olduğundan yazma sorunları yoktur. Yol tutarsızlığı sıralandı benim açımdan bir hataydı.
jvc26

Bir başlık olarak, nginx config biriydi, 404'lerin Drupal'a geçmesi ve bunun da küçük resim oluşturulmasını tetiklemesiyle ilgili sorunlardı.
jvc26

1

Letharion cevabını tamamlamak için, küçük resim, orta ... resim stilleri oluşturmak için kullandığım yöntem.

Kesinlikle, yukarıda listelenen tüm noktaları sonuçsuz kontrol ettim.

Sonra (Linux OS üzerinde) ben düzenlenebilir /usr/local/etc/suphp.conf için php üzerinde umask'ı değiştirmek o maksimum 755 izinlere sahip dosyalar VE dizinleri oluşturabilir böylece, (o 744 max oldu).

Bu da problemi kesin olarak çözdü. :)


0

Drupal 8.0.3'deyim.
Benim durumumda bu klasör kurulumda oluşturulmaz.

sites/default/files/field/image

Bu yüzden Drupal kurulumunun eski sürümünden kopyalayarak koydum.
Küçük resim, orta ve büyük dahil tüm resimler artık gösteriliyor.


-1

Kök ve dosyalar dizinindeki .htaccess dosyasını kontrol edin. Gerekirse yeni .htaccess dosyasıyla değiştirin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.