WD5 - разработка сайтов

Решено: Drupal NGINX не создаются thumbnail (миниатюры) изображений

В случае отказа от apache и использования nginx в связке с php5-fpm может появиться проблема. Все работает, а изображения не создаются.

Проблемы могут быть в трех случаях.

1) Не верные права на директорию.

Решение

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

по умолчанию права на папку с миниатюрами и другими стилями должны быть 755, так же проверьте права, на запись сервером. Владелец должен быть или специальный пользователь или сервер.

Сменить права можно с помощью команды chown, например сменим права на всю директорию где находится сайт

chown -R www-data:www-data my_site_dir

где my_site_dir нужная нам папка

2) Отсутствие расширения php для работы с изображениями. Проверить можно с помощью тестового файла вида.

<?php
var_dump(gd_info());
?>

называем его например, test-gd.php, закидываем в корень сайта и открываем.

При правильной настройке увидим что-то подобное

array(12) {
  ["GD Version"]=>
  string(27) "bundled (2.0.34 compatible)"
  ["FreeType Support"]=>
  bool(true)
  ["FreeType Linkage"]=>
  string(13) "with freetype"
  ["T1Lib Support"]=>
  bool(true)
  ["GIF Read Support"]=>
  bool(true)
  ["GIF Create Support"]=>
  bool(true)
  ["JPEG Support"]=>
  bool(true)
  ["PNG Support"]=>
  bool(true)
  ["WBMP Support"]=>
  bool(true)
  ["XPM Support"]=>
  bool(true)
  ["XBM Support"]=>
  bool(true)
  ["JIS-mapped Japanese Font Support"]=>
  bool(false)
}

В первых строках указана версия библиотеки, если она установлена.

3) Самая сложно вычисляемая причина - неправильный конфиг nginx

ImageCache в Drupal 7 принимает информацию об отсутсвующих файлах через 404 ошибку с сервера, и если файла нет, то создает новое изображение с заданными параметрами.

Тот конфиг что гуляет по русскоязычной версии сети не учитывает этот момент. Необходимо дописать следующие правила

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

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

после обновить страницу с миниатюрами, они должны появиться.

None