Не вдалося створити ескізи, середні та великі зображення


10

Під час використання нової установки Drupal 7.10 я встановив каталог для загальнодоступних завантажень sites/uploads.

Коли я потім додаю зображення до екземпляра вмісту, я завантажую оригінал, sites/example.org/files/imagename.pngяк очікувалося. Однак інші зображення (мініатюри, середні та великі) не створюються в sites/example.org/styles/*.

Каталог читається та записується користувачем PHP5-FPM, тому не повинно бути дозволів на видачу проблем.

Чому це відбувається? Як я можу це виправити?


Якщо ви використовуєте Nginx в якості веб - сервера , вам знадобиться додаткова настройка в вашому віртуальний хост, читайте тут для отримання додаткової інформації: drupal.org/node/1048570#comment-4047984
Gnuget

Відповіді:


13

Правильно, відповідь насправді трохи тонкіша, ніж я зрозумів. Виявляється, що imagecacheзаміна D7 потребує певної уваги у вашому nginx vhost. Якщо 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

Якщо ви хочете, щоб вони були створені для завантаження drupal.org/project/imageinfo_cache робить це
mikeytown2

Хороший улов. Це в кінцевому підсумку змусить мене використовувати рекомендований серверний файл nginx замість файлу, який DigitalOcean налаштовує автоматично, встановивши Drupal одним натисканням кнопки.
Meglio

2

Не забудьте перевірити як шлях до публічної файлової системи, так і тимчасовий шлях в адміністраторі / конфігурації / медіа / файловій системі

Після того як я встановив обидві папки з правильними дозволами, мої підпапки автоматично створюються, коли я зберігаю файл, зображення зберігається, а повідомлення про помилку відсутнє :-)


2

У моєму випадку ця проблема викликана тим, що зображення були отримані за допомогою https,

У налаштуваннях захищеної сторінки я додав наступні рядки, щоб ігнорувати https на шляхах файлів.

*/files/*

Сподіваюся, що це комусь допоможе. :)


1

Поки ви говорите, що ви перевірили дозволи, я все-таки почав би це, оскільки я часто мав цю проблему, і це майже завжди була проблема дозволів.

Загальна порада: Перш за все, перейдіть до адміністратора / конфігурації / медіа / файлової системи та натисніть «Зберегти конфігурацію». Це призведе до того, що Drupal буде повторно оцінювати дозволи встановлених каталогів, а також повідомляє про помилки, якщо виявить проблему.

По-друге: я припускаю, що у вас є apache, або www-data, або інші користувачі, яким належить веб-сервер, на відміну від користувача php? У системі Linux або Mac, sudo для цього користувача. Спроба написати файл як потрібний користувач - це найкращий спосіб по-справжньому переконатися, що у вас є правильні дозволи. Перейдіть на сайти / domain.com / files / і зателефонуйте "дані ехологу> new_file; cat new_file;" в терміналі. Це підтвердить, що ви насправді можете записатись у каталог запису. Зробіть те ж саме зі своїм tmp dir. Сподіваємось, хтось інший може запропонувати, як виконувати ті самі дії в системі, як Windows.

По-третє: щоб виключити права доступу до каталогу, рекурсивно застосуйте 777 каталог файлів. Після цього можна відновити більше дозволених прав

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

Четверте: переконайтеся, що каталог tmp має повну доступність.

По-п’яте: Можливо, вам доведеться почати налагодження коду, якщо ви вже з'ясували його.


Дякуємо за поради: Ви вже спробували вищесказане, жодних помилок від Drupal у зміні файлової системи не було, тому дозволи повинні бути нормальними. Усі процеси PHP виконуються як користувач, який може записатись у цей каталог, тому користувач, який працює на веб-сервері, не змінює можливості запису. Перевірили вручну дозволи, сумісні з записом. / tmp - як завжди 777, тому проблем із записом немає. Розбіг невідповідності шляху був помилкою з мого боку.
jvc26

Як голова вгору, проблема була однією з конфігурацій nginx, з проблемами для передачі 404s Drupal, що в свою чергу викликає створення мініатюр.
jvc26

1

Щоб завершити відповідь Летаріона, ось метод, який я використовував для отримання мініатюр, середніх ... створених стилів зображення.

Я точно вказував, що спершу перевірив усі пункти, перелічені вище, без результату.

Тоді (в ОС Linux) я редагував /usr/local/etc/suphp.conf, щоб змінити umask на php , щоб він міг створювати файли та каталоги з максимальним дозволом 755 (це було на 744 макс.).

І це остаточно вирішило проблему. :)


0

Я на Drupal 8.0.3.
У моєму випадку ця папка не створюється під час встановлення.

sites/default/files/field/image

Тож я виклав це, скопіювавши з старішої версії інсталяції Drupal.
Усі зображення, включаючи мініатюри, середні та великі, тепер відображаються.


-1

Перевірте .htaccess файл у кореневій та файлі файлів. Замініть на новий .htaccess файл, якщо потрібно

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.