图像样式返回拒绝访问


22

我使用插入模块允许用户将具有特定图像样式的图像插入页面。升级到Drupal 7.20后,图像未存储在files/styles文件夹中,并且图像URL返回403(访问被拒绝)错误。我检查了文件夹权限,它们都设置为777。


我还安装了media_flickr模块,但是我相信我的图像样式在安装后仍然有效。我可能是错的。
埃文·约翰逊

Answers:


32

始终建议您在更新之前阅读新版本的发行说明,以确保更新不会破坏某些当前功能。

Drupal 7.20发行说明提到:

此版本中的安全修复程序更改了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
h!是的,阅读发行说明很好。我有一个不好的习惯,只是输入“ drush up drupal”。谢谢!!!
埃文·约翰逊

在补丁#1923554工作了我的问题
雷米

@rémy,请参阅编辑。
AjitS

我不想允许不安全的衍生工具。奇怪的是,当我尝试从图像样式中创建图像时,它确实为我提供了url和安全令牌,但是仍然拒绝打印访问。有任何想法吗?
亚历克斯

3
如果您在调用image_style_path()生成图像路径的代码中的任何位置,此问题也将持续存在,需要将其更改为image_style_url()才能正确生成令牌。
masterchief

3

值得的是,我还发现在升级和清除缓存后,我的图像样式目录不再以正确的方式设置正确的权限。

它们的根样式/ [您的样式]和样式/ [您的样式] /公共应该为755,以便正确加载内容。

全部更改它们会再次再次正确显示图像!


1

修复文件系统:/ admin / config / media / file-system

这是我的设置:

设置公共系统路径:sites / default / files

专用文件系统路径为空。

临时目录: / tmp

默认下载方法 (已选择)由Web服务器提供的公共本地文件。


1

执行此编辑不能解决问题并产生错误:

modules / image / image.admin.inc的第775行需要补丁...

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

modules / image / image.admin.inc的第775行需要补丁...

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

4
如果使用小猫,它们会死。(永远不要破解内核)。
stefgosselin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.