上载图像时内存不足

时间:2011-09-16 作者:Teknophilia

有时,当我上传图片(使用flash或浏览器上传器)时,我会收到这样的消息(这是一个1.46MB jpg):

Fatal error: Out of memory (allocated 69206016) (tried to allocate 4000 bytes) in /home/ab64489/public_html/wp-includes/media.php on line 254
我在共享主机上,但最大上载大小为64MB。我尝试过上传其他文件(我制作了一些随机文件的压缩包,总容量约为58.1MB,上传和处理都没有问题,所以不是文件大小)。上传似乎也很好,但当它试图处理时,就会遇到错误。

我在这里和其他网站上看到过类似的问题,但没有真正的解决方案。

此问题的原因可能是什么?

2 个回复
最合适的回答,由SO网友:Brian Fegter 整理而成

这不是Wordpress的问题。在一个共享的环境中,没有人知道罪魁祸首可能是什么。您可能没有访问php的权限。ini配置,我们也不知道您的托管公司在您的服务器上阻塞了多少个网站。

共享服务器的本质是每个客户端共享该服务器的资源。如果一个网站在你上传图片时使用了大量资源,那肯定会影响它。

唯一真正的解决办法是进入一个更可控的环境。很久以前,我放弃了共享主机,选择了Rackspace的云服务器。我完全控制住了,我不必担心同一个盒子里的其他内存消耗。

SO网友:Thunder Rabbit

我的解决方案(在wordpress 3.3.1中)是自己进行图像压缩,然后在DB的元数据表中添加一个条目。

对于图像压缩,我注意到其他正确压缩的文件都压缩到三个一致的大小:150x150、Mx300和Nx1024,其中M和N将保持原始图像的比例。

在元数据表中,我新创建的帖子已经有了一个条目。排序依据post_id 然后用你的post_idmeta_key = _wp_attached_file 确保你的在那里。

我对应的行具有meta\\u值=2012/04/get_in_shape.png.

现在是有趣的部分!使用查找一行(从正确压缩图像的帖子中)meta_key = _wp_attachment_metadata 并使用其价值meta_value 作为新行的模板。

在新行中,值应为

`meta_id`  (null)  as it\'s an AUTOINCREMENT field
`post_id`  (your post id)
`meta_key` _wp_attachment_metadata
`meta_value`  (as below)
以下是一个serialize()ed字符串,其中包含为我工作的数据meta_value. 如果没有调整,它将不适用于您。如果您可以完成以上所有操作,那么您当然也可以进行调整。

a:6:{s:5:"width";s:4:"3321";s:6:"height";s:4:"4153";s:14:"hwstring_small";s:22:"height=\'96\' width=\'67\'";s:4:"file";s:24:"2012/03/get_in_shape.png";s:5:"sizes";a:3:{s:9:"thumbnail";a:3:{s:4:"file";s:24:"get_in_shape-150x150.png";s:5:"width";s:3:"150";s:6:"height";s:3:"150";}s:6:"medium";a:3:{s:4:"file";s:24:"get_in_shape-240x300.png";s:5:"width";s:3:"212";s:6:"height";s:3:"300";}s:5:"large";a:3:{s:4:"file";s:25:"get_in_shape-819x1024.png";s:5:"width";s:3:"724";s:6:"height";s:4:"1024";}}s:10:"image_meta";a:10:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";}}
查看路径查找对象2012/04/get_in_shape.png? 这是文件的路径(可湿性粉剂内容作为其理解的前缀)。注意,前面是s:24 这是值的字符串长度。更改路径以匹配文件,然后更改24以匹配所用路径的长度。

对每个文件大小都这样做,保存新记录,您就获得了金牌。

如果你不知道/不知道怎么做,就不要尝试。只是说,有一种比转移到新主机更便宜的方法。

(*)如果在大学学习这一切被认为是廉价的。

结束

相关推荐

Manipulating Media uploader

好啊我会尽可能地解释这件事,对我直言不讳。无论如何,我正在尝试将默认媒体上传器作为插件的一部分。目前,我已成功使用该筛选器attachment_fields_to_edit 隐藏大多数输入字段,只保留标题(&;备用文本字段,以及自定义提交按钮。单击时,此按钮将获取图像URL并将其放置到div 在父页上。不管怎样,这就是我的问题。上传器本身的所有功能都按照我的要求运行,但目前过滤器正在将其自身应用于帖子、页面、媒体库等中的媒体上传器。我只需要其他字段&;自定义按钮显示在我的插件中,但不显示在其他