【问题标题】:Allowed memory size of 262144 bytes exhausted (tried to allocate 24576 bytes)允许的内存大小为 262144 字节已用尽(尝试分配 24576 字节)
【发布时间】:2013-04-17 00:14:48
【问题描述】:

这个我快疯了。

我收到了下一条消息:

Allowed memory size of 262144 bytes exhausted (tried to allocate 24576 bytes)

待办事项列表

检查 phpinfo(),找到正确的 php.ini 路由并编辑它。 将 memory_limit 更改为

memory_limit = 128M

确保值 memory_limit 更改 con phpinfo() 结果:

memory_limit    128MB   128MB

检查 .htaccess 并添加(不需要)

php_value memory_limit 128M

并且也可以像这样通过 php 更改它(在错误行之前):

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

到处都说内存设置为 128M,但仍然出现该错误?

错误在 Swift 库(用于发送电子邮件的库)中,在 abstractSmtpTransport.php 中,所以我的代码 int 不应该工作。

有什么想法吗???

编辑:是的,之前已经完成了重新启动 apache。

编辑 2: @patrick,补充说,但没有任何回应

尝试使用较低的值,每个文件 28M int,重新启动 apache,同样的错误(phpinfo 显示新值)

尝试使用 -1、重新启动和相同的错误。

编辑 3:允许的内存大于分配的内存不是很奇怪吗? (尽管允许的内存大小远低于分配的实际允许内存)

【问题讨论】:

  • 只是为了仔细检查 - 您在更改后重新启动了 apache,对吧?
  • 如果你尝试更低的值,比如 1M,会怎样?
  • 一些杀戮递归?
  • 另外,你更新了正确的配置文件,对吧?您会在 apache、php 等中找到类似的 ini 文件
  • 如果您仍然遇到相同的错误,则尝试将内存限制设置为-1(最大值),这意味着代码中肯定有问题。可能是一个无限循环。

标签: php


【解决方案1】:

遇到了类似的问题,修改我的 wp-config.php 文件没有帮助。我的是一个多站点,我为解决它所采取的步骤如下。因此,请检查您的站点是否为多站点,这可能会有所帮助。

登录您的 cPanel 并检查软件部分。单击“MultiplePHP INI 编辑器”图标。在“配置 PHP INI asic 设置”页面上,从下拉列表中选择主目录或特定域并进行编辑。

这些是我对我所做的更改:

memory_limit = 256M
upload_max_filesize = 12M
post_max_size = 13M
file_uploads = On
max_execution_time = 180

保存更改,清除浏览器缓存,然后检查错误是否消失。

【讨论】:

    【解决方案2】:

    如果您尝试通过 composer 安装某些软件包时发生这种情况,请使用此命令 COMPOSER_MEMORY_LIMIT=-1 作曲家需要 nameofpackage

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题。要解决此问题,您需要更新您的 PHP 版本。

      【讨论】:

        【解决方案4】:

        就我而言,这是因为我有另一个文件夹,其中包含 xampp 及其所有文件(htdocs、php e.t.c)。就像我在不同的目录中安装了两次 Xampp,由于某种原因,另一个的配置影响了我当前的 xampp 目录,所以我也不得不更改另一个目录的 php.ini 文件中的内存大小。

        【讨论】:

          【解决方案5】:

          在我的情况下,MG 都没有帮助,所以我使用:https://www.gbmb.org/mb-to-bytes 将分配的内存转换为字节

          4096M = 4294967296

          php.ini:

          memory_limit = 4294967296

          【讨论】:

            【解决方案6】:

            我试图提高 Wordpress 对媒体上传设置的限制。我遵循了一些我不会提及的博客的建议,将限制从 64MB 提高到 2GB。

            我做了以下事情:

            在 WP ADMIN 中创建了一个 (php.ini) 文件,其中包含以下整数:

            upload_max_filesize = 2000MB
            post_max_size = 2100MV
            memory_limit = 2300MB
            

            我在尝试登录我的 Wordpress 仪表板以检查它是否有效时立即收到此错误:

            “262144字节的允许内存大小用尽(试图分配24576字节)”

            这条链中的上述信息对我帮助很大。 (堆栈通常会顺便说一句)

            我将 PHP.ini 文件修改为以下内容:

            upload_max_filesize = 2000M
            post_max_size = 2100M
            memory_limit = 536870912M
            

            主要区别在于只使用 M,而不是 MB,并将内存限制设置得高。

            我一保存更改的 PHP.ini 文件,我就保存它,再次登录,登录屏幕重新出现。

            我进去检查了媒体上传,然后砰的一声:

            Image showing twordpress media folder “Add New” box, with limits stated as “MAXIMUM UPLOAD FILE SIZE: 2 GB”

            我还没有重新启动 Apache……但一切看起来都很好。

            谢谢大家。

            【讨论】:

            • 我经常看到人们将内存限制设置得非常高,却不知道这会对您的服务器产生何种连锁反应。例如,如果您有 16 gigs 的 ram,并且内存限制为 2 Gig,则您允许 8 个进程(理论上)在遇到内存泄漏时最大限度地使用内存。您的错误表明您的 256 KB 限制已用完 ~24KB,因此将 memory_limit 设置为 2 Gig 太高了。在这里可以使用 384K 的限制,或者在您的情况下,甚至 4 Meg 的 HIGH 值也可以使用。剩下的 4000 个 Apache 进程可以放入 16 Gigs 的 RAM,而不是 8 个。
            【解决方案7】:

            262,144字节的值是诊断的关键。您会在各处的 PHP 问题中看到这个神奇的数字。为什么?因为如果您尝试使用它无法使用的值来更新限制,那么 PHP 最终将作为其内存限制的值。空字符串将产生此内存限制,不正确的单位表示法(如“128MB”而不是正确的“128M”)也会产生此内存限制。

            262,144 字节正好是 256 千比字节。为什么 PHP 在感到困惑时会回到那个值,这超出了我的理解。

            允许的内存大于分配的内存不是很奇怪吗?

            显示的分配量只是最近的分配尝试,即违反内存限制的分配。见Allowed memory size in PHP when allocating less

            【讨论】:

            • 谢谢!最后,回答为什么允许大于分配。这让我发疯了。
            【解决方案8】:

            我发现我的问题与您的问题有些不同,但我会发布此答案以防它对其他人有所帮助。在定义我的 memory_limit 时,我使用 MB 作为简写而不是 M,而 php 默默地忽略了它。我把它改成整数(以字节为单位),问题就解决了。

            我的 php.ini 更改如下:memory_limit = 512MBmemory_limit = 536870912。这解决了我的问题。希望它对其他人的帮助!你可以阅读php的简写here

            祝你好运!

            编辑

            正如 Yaodong 指出的那样,您可以轻松地使用正确的简写“M”,而不是使用字节值。出于调试目的,我将我的值更改为字节值,然后就懒得改回来了。

            【讨论】:

            • +1。我做不到+10。这么多年来,一定有多少人被抓住了? PHP 需要更加用户友好
            • +1 用于使用 M 而不是 MB 或字节。更具可读性,您不必使用任何转换器来更改限制。
            • 哈哈,是的,我也会 +1。我只是处于调试模式,还没有回到正常的生产思维。
            • @WanderingZombie PHP 已经死了,谁他妈的用 M 代替 MB?抱歉,你发帖已经一年多了,但我无法保留。+他们的评论是举个例子(128MB),确实非常感谢。
            • 是的,真正的问题是他们的例子本身是无效的!
            【解决方案9】:

            看看这个答案是否可以帮助你。特别是 CLI ini 可能与脚本通过浏览器运行时不同。

            Allowed memory size of X bytes exhausted

            【讨论】:

            • 不,我的代码中没有设置任何ini,只有我用来尝试提升它的那个,但没有成功
            猜你喜欢
            • 2020-04-10
            • 2021-04-03
            • 1970-01-01
            • 2018-08-01
            • 2021-12-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多