【问题标题】:PHP Memory Exhausted Even I'm Sure That I Have More [closed]PHP内存耗尽,即使我确定我有更多[关闭]
【发布时间】:2014-09-15 13:06:23
【问题描述】:

我自己的漂亮运行脚本开始报错:

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

我很确定我的内存限制不是 12 MB。这也与脚本无关,因为我知道我可以在本地主机上运行它。正如 Codeigniter Profiler 所说,它需要 17MB 的内存。

那么这可能是什么原因呢?为什么我的服务器认为它有 12MB 的内存限制...

【问题讨论】:

  • 我觉得你的剧本没有你说的那么“漂亮”。
  • 我很确定某些东西将您的内存限制设置为 12MB。检查 phpinfo() 输出和网络服务器配置。
  • 是什么让你认为你的 php 内存限制它高于 12MB?
  • @Daan 对不起,你错了。可以工作 3 个月没有任何问题。
  • @Wrikken here adresegel.com/info.php 我看不到类似的东西

标签: php apache codeigniter


【解决方案1】:

您可以尝试使用 ini_set('memory_limit', '2048M');在你的 php 代码中。

不建议设置那么高,等找到真正原因后可以降低。

http://php.net/manual/en/function.ini-set.php

然后您可以使用此函数:memory_get_usage() 检查您的应用程序在特定行使用了多少内存。使用它来查找泄漏所在的特定行。

http://php.net/manual/en/function.memory-get-usage.php

【讨论】:

    【解决方案2】:

    你可以像这样增加内存:

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

    【讨论】:

    • 我试过了,但我仍然得到 [Mon Sep 15 16:53:02 2014] [error] [client 78.179.146.185] PHP 致命错误:允许的内存大小为 12582912 字节已用尽(试图分配 32 个字节)在
    • 请想一想还是显示12582912字节
    【解决方案3】:

    仅仅因为您的服务器有更多内存并不意味着它将或应该将其全部分配给一个特别贪婪的脚本系统(否则一个编码错误可能会占用系统的所有资源)。 因此,PHP 对允许使用的数量施加了自己的限制。如果你修改你的 htaccess 文件,添加:

     php_value memory_limit 20M
    

    应该允许它最多占用 20Mb。显然,您可以尝试使用它来查看您需要多少(尝试先降低它,看看在该错误情况下数字是否会发生变化)。

    您可以通过PHP.net site了解更多关于 memory_limit 的信息

    请注意,您确实应该尝试减少脚本所需的内存量(因为服务器上的其他系统现在会减少),但此解决方案至少可以让您到达目的地。

    正如其他人所说,您还可以使用 ini_set 在该特定脚本的开头设置相同的变量,然后在运行结束时恢复为标准。但是请注意(出于显而易见的原因),一些服务器不允许他们的脚本只说“我需要我的 Srz Bzns 的所有资源”并饿死服务器的其余部分。

    【讨论】:

    • 我知道 php_value 的东西,但它不适用于我的情况。我试过了,我也知道我的 memory_limit 没有限制。
    • @dreamend 很有趣,因为根据那个错误必须存在。
    • 好的。所以让我们再检查一次。你能把 .htaccess 中必须包含的内容发给我吗?另外我的脚本不在根文件夹中。 (那里有一个 magento 安装,并且也有一个 .htaccess)我不知道需要此信息,但我的根 .htaccess 会影响脚本文件夹中的另一个 .htaccess 吗?
    猜你喜欢
    • 2015-10-01
    • 2020-05-08
    • 2014-09-08
    • 2013-07-22
    • 2013-07-06
    • 2014-06-28
    • 2011-04-20
    • 1970-01-01
    相关资源
    最近更新 更多