【问题标题】:memory_limit not workmemory_limit 不起作用
【发布时间】:2012-09-21 02:55:38
【问题描述】:

致命错误:允许的内存大小为 104857600 字节已用尽(已尝试 分配32345609字节)

这意味着我需要 137203209 字节的内存限制来运行我的 php 脚本。
尽管我在脚本中有以下代码,但我得到了这个错误。

 ini_set('memory_limit', 268435456); # 256 MB

脚本在我的共享主机服务器上。我无权访问 php.inimemory_limit 确实适用于同一托管服务器中的其他脚本。

当我检查我的服务器的 phpinfo() 时,我看到了这些

suhosin.memory_limit - 128
memory_limit - 100M

我的脚本肯定需要128M以上,因为它是一个带有大文件附件的邮件发送脚本。

【问题讨论】:

  • phpinfo(); 并检查您的ini_set 是否更改了它。有可能(我会说 99%)你不允许这样做。
  • 你确定你需要那么多内存吗?如果你这样做,也许你不应该使用共享主机。另外请记住,代码中的错误(如无限循环)也会通过耗尽所有可用内存而导致该错误。
  • @bfavaretto:实际上没有无限循环。我已在本地主机中成功运行脚本。

标签: php memory-limit


【解决方案1】:

您在共享主机上,而共享主机几乎从不让您使用ini_set('memory_limit',XXX) 函数(否则每个人都会试图抢占整个服务器内存并锁定整个服务器)。检查phpinfo() 看看是否开启了安全模式……可能是。

另外,附注:如果您想在任何情况下将内存限制设置为 256MB,您可以使用:

ini_set('memory_limit', '256M');

符号而不是写出整个整数。

【讨论】:

  • 我看到我的服务器中的安全模式已关闭。
【解决方案2】:

suhosin.memory_limit - 128 不允许您将内存限制增加到 128mb 以上,将其设置为 268435456 以允许将 memory_limit 增加到 256Mb。不过,我怀疑您是否可以在共享主机上执行此操作,因为您需要访问 suhosin ini 文件(您不能执行 ini_set('suhosin.memory_limit', 268435456); 之类的操作)。

More about suhosin.memory_limit

【讨论】:

  • @SithuKyaw 脚本很少使用超过 128M 的内存,除非您正在做一些超级繁重的事情(图像处理等)
  • @Sithu Kyaw,这取决于:)我有一个脚本,它定义了约 30 个单词的所有排列 - 它消耗大量内存(接近 256Mb),因为我要返回大约 25k 行,并且在加入“”之前,每个单词都与其他单词分开保留在数组中.当然,我可以通过将每个排列计算附加到文件来优化它,但是我太懒了。如果此脚本在生产服务器上运行以不影响其他 php 进程,我可以对其进行优化,因此它们会因内存不足而崩溃。虽然我不必这样做,但我不打扰自己这样做。
猜你喜欢
  • 2012-04-13
  • 1970-01-01
  • 1970-01-01
  • 2011-07-01
  • 2011-08-17
  • 2022-11-18
  • 1970-01-01
  • 2012-02-07
  • 2023-02-09
相关资源
最近更新 更多