在出现此错误的情况下:
致命错误:内存不足(已分配 31981568)(试图分配3264 字节)
在进入这个阶段之前,我可以先使用GD lib来减小文件大小吗?
答案 0 :(得分:1)
简而言之:不。
GD使用内存来缩小图像的大小,如果图像太大,则超出内存限制并给出错误。
您可以计算图片的大小,以便您可以在此处保持一定的内存限制:http://www.dotsamazing.com/en/labs/phpmemorylimit
一个选项虽然是一个不受欢迎的选项,但是增加了内存限制,你可以使用ini_set()或.htaccess文件。请检查您的主机是否允许此操作。如果您有自己的主机,请相应地配置Apache。
一个(也提到过)选项是使用Imagemagick,这是一个在服务器上运行的程序,您可以调用该程序为您调整大小。此程序的内存限制可能与PHP的内存限制不同,但也可能存在限制。请联系您的主机以获取更多信息。
答案 1 :(得分:0)
您可以改为设置更高的内存限制。
ini_set('memory_limit', $file_size * 2);
因为如果你想使用GD减小大小,你仍然需要在减小大小之前为该文件分配内存。
另请记住为图片上传设置文件大小限制。
您可以使用filesize()
功能在读取/打开文件之前检查文件大小。
答案 2 :(得分:0)
您是否正在使用PHP脚本从磁盘读取文件?
答案 3 :(得分:0)
这显然是从您之前的帖子继续。如果我没记错的话,这是你正在使用的上传图片吗?如果是这样,图像的大小是多少?如果它真的很大,你应该考虑限制图像上传的大小。
答案 4 :(得分:0)
当你想让内存做得更多时,就会发生这种情况......你可能想要查看imagemagick,所以不要通过PHP调整大小,只需向imagemagick发送请求以进行调整大小。
或者更简单的方法是通过ini增加每个php脚本脚本的内存限制。