【问题标题】:Allowed memory size of 134217728 bytes exhausted (tried to allocate 81920001 bytes)允许的内存大小 134217728 字节用尽(尝试分配 81920001 字节)
【发布时间】:2017-10-30 16:03:02
【问题描述】:

我知道有很多关于这个问题的问题。但我仍然无法理解原因。 添加调整大小功能时显示错误。

Image::make($logo)->resize(200*200)->save(public_path('Uploads/logo/' . $fileName));

否则它工作正常。 为什么函数会尝试消耗这么多内存?

【问题讨论】:

  • 可能不仅仅是那个单一的函数,而是你的脚本的聚合内存消耗太高了。那个电话只是第一个超出限制的电话。也许尝试查看您的代码以找到其他高内存部分。
  • @Sirko 谢谢你的知识.. :)

标签: php


【解决方案1】:

当您执行->resize(200*200) 时,您并未将图像大小调整为 200 像素 x 200 像素,而是将宽度(resize() 函数的第一个参数)作为 200 乘以 200,即 40,000,因此存在内存问题.

你需要做的:

Image::make($logo)->resize(200, 200)->save(public_path('Uploads/logo/' . $fileName));

【讨论】:

    【解决方案2】:

    根据您的应用程序需求增加 php.ini 中变量 memory_limit = 128M 的数量。可能是256M/512M/1048M.....

    【讨论】:

      【解决方案3】:

      调整大小会占用大量内存。也许在这种情况下,原始图像很大。您可以尝试先将其展平为 JPG,然后再调整大小。

      增加内存限制,您可以在 PHP 脚本之上添加:

      ini_set('memory_limit', '2G');
      

      【讨论】:

      • 我很想看看在处理图像时使用 2G 内存的脚本;)
      猜你喜欢
      • 2016-04-18
      • 2013-08-09
      • 2021-12-29
      • 2017-07-23
      • 2018-02-23
      • 2014-11-20
      • 1970-01-01
      • 2017-08-11
      • 1970-01-01
      相关资源
      最近更新 更多