允许的内存大小为262144字节已用尽(尝试分配 24576 字节)

php
2022-08-30 10:01:24

我为此发疯了。

我收到了下一条消息:

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 库(用于发送电子邮件的库)中,抽象为SmtpTransport.php,因此我的代码int不应该工作。

任何想法???

编辑:是的,上一个已经完成了重启apache。

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

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

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

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


答案 1

我看到我的问题与你的问题有点不同,但我会发布这个答案,以防它帮助别人。我使用速记而不是定义我的memory_limit,php默默地忽略了它。我将其更改为整数(以字节为单位),问题得到了解决。MBM

我的 php.ini更改如下:更改为 .这解决了我的问题。希望它对别人有帮助!你可以在这里阅读php的速记。memory_limit = 512MBmemory_limit = 536870912

祝你好运!

编辑

正如Yaodong所指出的,你可以很容易地使用正确的速记“M”,而不是使用字节值。出于调试目的,我将我的值更改为字节值,然后懒得将其更改回去。


答案 2

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

262,144 字节正好是 256 千字节。为什么PHP在感到困惑时会跑回家这个值,这超出了我的范围。

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

显示的分配量只是最近的分配尝试,与内存限制相冲突的尝试。请参阅分配较少时 PHP 中允许的内存大小


推荐