Django/Wagtail 上传图片时出现500错误

3 投票
2 回答
3354 浏览
提问于 2025-04-18 01:36

我在使用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 个回答

0

我也遇到了同样的错误,不过在我的情况下,我是在Ubuntu的VPS上使用apache2网络服务器。

但是执行下面的命令

sudo chown www-data:www-data mysite/

还有

sudo chmod 755 mysite/media

就解决了这个问题。

6

我猜你的网页服务器可能对请求的大小设置了限制。我们在用nginx部署时也遇到过类似的问题,nginx默认会对请求大小限制在1MB。对于nginx来说,相关的设置是client_max_body_size。如果你看到的是一个普通的500内部服务器错误页面,而不是Django的错误信息,这说明问题出在网页服务器上,而不是Django内部……如果你查看网页服务器的错误日志,希望能看到更详细的错误信息。

你可以尝试一个简单的检查,就是在Wagtail的“文档”区域上传相同的文件——这个地方不会对文件进行任何处理(只是存储它们),所以如果在那里上传仍然失败,就可以排除Pillow的问题。

撰写回答