Стили изображений возвращают Доступ запрещен


22

Я использую модуль Вставка, чтобы позволить пользователям вставлять изображения с определенным стилем изображения на страницу. После обновления до Drupal 7.20 изображения не сохраняются в files/stylesпапках, а URL-адрес изображения возвращает ошибку 403 (доступ запрещен). Я проверил разрешения для папки, и все они установлены на 777.


Я также установил модуль media_flickr, но я считаю, что мои стили изображений работали после установки. Я могу ошибаться.
Эван Джонсон

Ответы:


32

Всегда рекомендуется прочитать примечания к выпуску нового выпуска перед обновлением, чтобы убедиться, что обновление не нарушает некоторые из текущих функций.

В заметках о выпуске Drupal 7.20 упоминаются:

Исправления безопасности в этом выпуске изменяют все производные URL-адреса изображений, сгенерированные Drupal, чтобы добавить токен в виде строки запроса. (Например, ссылки, которые ранее указывали на URL-адрес, например http://example.com/sites/default/files/styles/thumbnail/public/field/image/example.png , теперь будут указывать на URL-адрес, например http: / /example.com/sites/default/files/styles/thumbnail/public/field/image/example.png?itok=zD_VaCaD .)

Вы можете добавить следующую строку, чтобы settings.phpизображения работали на сайте:

$conf['image_allow_insecure_derivatives'] = TRUE;

но это было бы так же хорошо, как обновить ядро ​​и не использовать обновления ;-)

Несколько полезных ссылок со страницы:

ОБНОВИТЬ:

Из заметок о выпуске Drupal 7.21, обновление включает в себя исправления несовместимости, представленные только в выпуске безопасности Drupal 7.20. Поэтому рекомендуется обновить до последней версии, т. Е. 7.21, чтобы использовать исправления безопасности в версии 7.20.


2
DOH! да, чтение заметок о выпуске это хорошо. У меня есть плохая привычка просто набирать «drush up drupal». Спасибо!!!
Эван Джонсон

патч в # 1923554 сработал для моей проблемы
Рем

@ Реми, пожалуйста, смотрите редактирование.
AjitS

я не хочу разрешать небезопасные производные. странно то, что когда я пытаюсь создать изображение из стиля изображения, оно дает мне URL и маркер безопасности, но все равно печатает, что доступ запрещен. Любые идеи?
Алекс

3
Эта проблема также будет сохраняться, если в любом месте кода, который вы вызывали image_style_path () для генерации пути к изображению, его необходимо изменить на image_style_url () для правильной генерации токена.
мастер

3

Для чего это стоит, я также обнаружил, что каким-то образом мои каталоги стилей изображения больше не устанавливали правильные разрешения после обновления и очистки кэша.

Корневые стили / [ваш стиль] и стили / [ваш стиль] / public должны быть 755 для правильной загрузки.

Изменение их всех заставило изображения казаться должным образом снова!


1

Исправьте вашу файловую систему: / admin / config / media / file-system

Вот мои настройки:

Настройте общедоступный системный путь : sites / default / files

Путь к закрытой файловой системе пуст.

Временный каталог: / tmp

Способ загрузки по умолчанию (выбран). Публичные локальные файлы, обслуживаемые веб-сервером.


1

Выполнение этого редактирования НЕ устранило проблему и вызвало ошибки:

строка 775 модулей / image / image.admin.inc нуждается в патче ...

775> - $preview_file = image_style_path($style['name'], $original_path);
775> + $preview_file = image_style_url($style['name'], $original_path);

(поскольку у меня низкая репутация, я пока не могу комментировать под этим отдельным ответом)

Я реализовал этот путь назад, и он исправил много вещей, когда эта проблема возникла впервые:

$conf['image_allow_insecure_derivatives'] = TRUE;

Я также реализовал изменение всего +FollowSymLinksна, +SymLinksIfOwnerMatchно все еще не могу заставить предварительные просмотры стилей изображения работать должным образом.

Следующим и последним вариантом является изменение разрешений пользователя размера сервера, ack. Я или исправлю это или сломаю все это.


0

строка 775 модулей / image / image.admin.inc нуждается в патче ...

775> - $preview_file = image_style_path($style['name'], $original_path);
775> + $preview_file = image_style_url($style['name'], $original_path);

4
Котята умрут, если это будет использовано. (Никогда не взламывайте ядро).
stefgosselin
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.