[Решено] Что то с модулем Image в d7

Главные вкладки

Аватар пользователя olk olk 21 февраля 2011 в 12:15

Это я туплю или все же что то с ядреным модулем Image в D7, а именно не создаются пресеты.
Значит так:
1. Добавляю к типу материалу поле типа Image (Изображение) виджет (Изображение)
2. Устанавливаю отображения поля
метка (скрыто) размер(Medium) тип (ссылка на файл)
3. Пересбрасываю пресеты
4. Прикрепляю изображение к ноде
сам файл загружатся в sites/default/files/field/image
a пресеты не создаются Sad

На сколько я понимаю для прикрепленных полей изображения для всех пресетов должны создаваться каталоги типа
sites/default/files/styles/пресет/public/field/image
- так вот они не создаются
причем для примера ядра каталоги и файлы в нем создаются
- имеется ввиду sites/default/files/styles/пресет/public/modules/image/sample.png

Что я делаю не так и почему не едут лыжи ...

Решено (частично):
Пришлось отдебажить модуль Image, но как всегда проблема оказалась не там (т.е. не в Друпале)...
Проблема оказалась в кэшировнии nginx-ом изображений Sad пока отключил кэшировние, пресеты стали нормально создаваться ...

Но до конца все же проблема не решена, т.е. откуда растут ноги понятно но как и оставить кэширование и создание пресетов буду думать
( проблема в том что пресет создается в момент первого обращения к файлу с нужным пресетом,
например к файлу http://www.example.com/sites/default/files/styles/small/public/field/ima...,
nginx - честно говорит, что page not found и соответственно не передает на обработку в апач который бы в свою очередь запустил обработчик пресетов.),
Решение вижу в написании какого-либо правила для nginx-a, что если файл/страница не найдена то отдать обработку в апач,
может у нас в сообществе есть специалисты по nginx которые подскажут как его подстроить ?
(я конечно и сам еще поищу по просторам инета решение, но вдруг уже есть готовое)

Решено:
Может кому пригодиться!
На просторах инета найдено и адаптировано следующее решение:
Перед кодом (в файле настройки nginx) определющим общее кэширование статических файлов, вставляем следующий код:

location ^~ /sites/default/files/styles/ {
index index.php;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?q=$1 last;
break;
}
}

Комментарии

Аватар пользователя acoder acoder 18 июня 2011 в 20:10

Спасибо. Решение пригодилось. Отдельное спасибо за разъяснение проблемы!

Но можно уточнить, данный код:

location ^~ /sites/default/files/styles/ {
index index.php;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?q=$1 last;
break;
}
}

делает исключение для всех файлов в упомянутом каталоге? Получается кеширование для них всегда не работает? Но ведь там рисунки, их много и они тяжелые.

Можно ли сделать решение, чтобы при первом лишь обращении такое исключение срабатывало, когда нужно сгенерировать картинку?

Аватар пользователя olk olk 18 июня 2011 в 23:21

"acoder" wrote:
делает исключение для всех файлов в упомянутом каталоге? Получается кеширование для них всегда не работает? Но ведь там рисунки, их много и они тяжелые.

Можно ли сделать решение, чтобы при первом лишь обращении такое исключение срабатывало, когда нужно сгенерировать картинку?


Оно именно так и работает, т.е. если файла не существует, то вызывается обработчик апача (посредством вызова страницы через ?q=), иначе просто отдается на откуп nginx

Аватар пользователя acoder acoder 19 июня 2011 в 14:38

olk wrote:

Оно именно так и работает, т.е. если файла не существует, то вызывается обработчик апача (посредством вызова страницы через ?q=), иначе просто отдается на откуп nginx

Спасибо за быстрый ответ. Smile А если апатча нет? У меня Nginx + php5-fpm, настроенные вот по этому руководству http://habrahabr.ru/blogs/sysadm/113101/

Аватар пользователя olk olk 19 июня 2011 в 21:44

"acoder" wrote:
Спасибо за быстрый ответ. Smile А если апатча нет? У меня Nginx + php5-fpm, настроенные вот по этому руководству http://habrahabr.ru/blogs/sysadm/113101/[/quote]
Ну если апача нет, то соответственно произойдет обработка через фрм, что в принципе одно и то-же (т.е. будет вызван php - который в с вою очередь вызовет генерацию пресета).