使用新安装的Drupal 7.10时,我将公共上传目录设置为sites/uploads
。
然后,当我将图像添加到内容实例时,将原始图像上传到sites/example.org/files/imagename.png
预期的位置。但是,不会在创建其他图像(缩略图,中图像和大图像)sites/example.org/styles/*
。
该目录可由PHP5-FPM用户读取和写入,因此不应有任何发行权限。
为什么会这样?我该如何解决?
使用新安装的Drupal 7.10时,我将公共上传目录设置为sites/uploads
。
然后,当我将图像添加到内容实例时,将原始图像上传到sites/example.org/files/imagename.png
预期的位置。但是,不会在创建其他图像(缩略图,中图像和大图像)sites/example.org/styles/*
。
该目录可由PHP5-FPM用户读取和写入,因此不应有任何发行权限。
为什么会这样?我该如何解决?
Answers:
是的,答案实际上比我意识到的要微妙得多。事实证明,imagecache
在Nginx虚拟主机中,D7的替换需要引起注意。如果没有将404发送到Drupal中以获取丢失的文件,则不会创建图像-我最初没有意识到,因为我以为它们是在上载时创建的。
location @rewrite {
rewrite ^/(.*)$ /index.php?q=$1;
}
location ~ ^/sites/.*/files/styles/ {
try_files $uri @rewrite;
}
需要将其添加到服务器定义中,并且您应该已经准备好开始滚动。显然,您的设置可能需要更改路径,但对我来说确实如此。
尽管您确实说过已经检查了权限,但仍然是我要开始的地方,因为我本人经常遇到此问题,而这几乎始终是权限问题。
一般建议: 首先,转到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目录具有完整权限。
第五:如果现在已经知道了代码,则可能需要开始调试代码。