Django/Wagtail 上传图片时出现500错误
我在使用Wagtail(一种基于Django的内容管理系统)时,运行在虚拟环境中,搭配FastCGI、Apache和共享主机。
当我通过Wagtail自带的图片上传工具上传图片时,有些图片能正常上传并处理,而有些上传则出现500内部服务器错误。
我尝试找出导致错误的图片类型之间的规律,但没能发现有什么相似之处。
我可以上传各种JPG、GIF、PNG格式的图片,大小从88KB到236KB不等,最大的尺寸是1000px x 950px。
导致错误的文件也是各种JPG、GIF、PNG格式的。我发现上传超过300KB的文件就会出错,虽然有些文件只有100KB或更小,也会出现500错误。通过django-admin上传时也会遇到同样的问题。
不过,通过sftp和cpanel上传的图片都能正常使用,所以这方面没有问题。
Wagtail使用Pillow
来处理图片。
我不太确定该从哪里开始查找这个问题。是Pillow还是Django出错了呢?
2 个回答
我也遇到了同样的错误,不过在我的情况下,我是在Ubuntu的VPS上使用apache2网络服务器。
但是执行下面的命令
sudo chown www-data:www-data mysite/
还有
sudo chmod 755 mysite/media
就解决了这个问题。
我猜你的网页服务器可能对请求的大小设置了限制。我们在用nginx部署时也遇到过类似的问题,nginx默认会对请求大小限制在1MB。对于nginx来说,相关的设置是client_max_body_size
。如果你看到的是一个普通的500内部服务器错误页面,而不是Django的错误信息,这说明问题出在网页服务器上,而不是Django内部……如果你查看网页服务器的错误日志,希望能看到更详细的错误信息。
你可以尝试一个简单的检查,就是在Wagtail的“文档”区域上传相同的文件——这个地方不会对文件进行任何处理(只是存储它们),所以如果在那里上传仍然失败,就可以排除Pillow的问题。