无法创建缩略图,中型和大型图像


10

使用新安装的Drupal 7.10时,我将公共上传目录设置为sites/uploads

然后,当我将图像添加到内容实例时,将原始图像上传到sites/example.org/files/imagename.png预期的位置。但是,不会在创建其他图像(缩略图,中图像和大图像)sites/example.org/styles/*

该目录可由PHP5-FPM用户读取和写入,因此不应有任何发行权限。

为什么会这样?我该如何解决?


如果您将nginx用作Web服务器,则需要在vhost中进行额外的配置,请阅读此处以了解更多信息:drupal.org/node/1048570#comment-4047984
Gnuget 2012年

Answers:


13

是的,答案实际上比我意识到的要微妙得多。事实证明,imagecache在Nginx虚拟主机中,D7的替换需要引起注意。如果没有将404发送到Drupal中以获取丢失的文件,则不会创建图像-我最初没有意识到,因为我以为它们是在上载时创建的。

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

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

需要将其添加到服务器定义中,并且您应该已经准备好开始滚动。显然,您的设置可能需要更改路径,但对我来说确实如此。


1
请注意,@ rewrite部分需要在配置文件中的其他位置进行适当定义才能起作用。就是说,它已经在我的身上,这也解决了我的问题,所以感谢jvc26 :)
El

@ElYobo的好处-已更新答案以确保清楚。谢谢
jvc26 '02

这会影响Nginx反向代理配置吗?我有同样的问题,这似乎无法解决。
2014年

如果你希望他们要在上传创建drupal.org/project/imageinfo_cache确实是
mikeytown2

接得好。最终,这导致我使用nginx推荐的服务器文件,而不是DigitalOcean通过一键式Drupal安装自动配置的文件
Meglio '16

2

确保同时检查公共文件系统路径和admin / config / media / file-system中的临时路径

一旦我为这两个文件夹都设置了正确的权限,当我保存文件,保存图像并且错误消息消失时,将自动创建我的子文件夹:-)


2

就我而言,问题是由于图片是使用https提取的,

我在安全页面设置上添加了以下几行,以忽略文件路径上的https。

*/files/*

希望这对某人有帮助。:)


1

尽管您确实说过已经检查了权限,但仍然是我要开始的地方,因为我本人经常遇到此问题,而这几乎始终是权限问题。

一般建议: 首先,转到admin / config / media / file-system,然后单击“保存配置”。这将导致Drupal重新评估设置目录的权限,如果发现问题,将给您错误消息。

第二:我假设您有一个拥有web服务器的apache或www-data或其他用户,而不是php用户?在Linux或Mac系统上,对该用户使用sudo。尝试以正确的用户身份写入文件是真正确保您具有正确权限的最佳方法。转到sites / domain.com / files /,然后调用“回显数据> new_file; cat new_file;”。在一个终端。这将验证您实际上可以写入写入目录。对您的tmp目录执行相同的操作。希望其他人可以建议如何在Windows之类的系统上执行相同的操作。

第三:要排除目录权限,请递归应用777 files目录。之后,您可以还原更多理智的权限

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

第四:确保tmp目录具有完整权限。

第五:如果现在已经知道了代码,则可能需要开始调试代码。


感谢您的建议:已经尝试了上述操作,Drupal在文件系统更改方面没有错误,因此权限必须很好。PHP进程全部以可以写入该目录的用户身份运行,因此Web服务器以该身份运行的用户不会影响写入功能。手动检查了与写入兼容的权限。/ tmp像往常一样是777,因此那里没有写问题。路径差异已被整理是我的错误。
jvc26 2012年

请注意,该问题是nginx配置中的一个,存在将404传递给Drupal的问题,而这又触发了缩略图的创建。
2012年

1

为了完成Letharion的回答,这是我用来获取缩略图,中型...图像样式的方法。

我想我首先检查了上面列出的所有要点,没有结果。

然后(在Linux操作系统上),我编辑了/usr/local/etc/suphp.conf更改php上的umask,以便它可以创建最大具有755个许可权的文件和目录(最大存在744个许可权)。

这就彻底解决了问题。:)


0

我正在使用Drupal 8.0.3。
就我而言,该文件夹不是在安装时生成的。

sites/default/files/field/image

因此,我通过从较早版本的Drupal安装中进行复制来放置它。
现在显示所有图像,包括缩略图,中图像和大图像。


-1

在根目录和文件目录中检查您的.htaccess文件。如果需要,请用新的.htaccess文件替换

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.