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

mon*_*xas 48 php

我为此感到疯狂.

我收到了下一条消息:

Allowed memory size of 262144 bytes exhausted (tried to allocate 24576 bytes)
Run Code Online (Sandbox Code Playgroud)

TODO LIST

检查phpinfo(),获得正确的php.ini路由并进行编辑.将memory_limit更改为

memory_limit = 128M
Run Code Online (Sandbox Code Playgroud)

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

memory_limit    128MB   128MB
Run Code Online (Sandbox Code Playgroud)

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

php_value memory_limit 128M
Run Code Online (Sandbox Code Playgroud)

并且还通过php更改它(在错误行之前):

ini_set('memory_limit','128M');
Run Code Online (Sandbox Code Playgroud)

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

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

有任何想法吗???

编辑:是的,前一个完成重启apache.

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

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

尝试使用-1,重新启动,同样的错误.

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

kae*_*ael 132

我发现我的问题与你的问题有点不同,但我会发布这个答案以防万一.我使用的MB是速记而不是M在定义我的memory_limit时,而php却在默默地忽略它.我把它改成了一个整数(以字节为单位),问题解决了.

我的php.ini更改如下:memory_limit = 512MBto memory_limit = 536870912.这解决了我的问题.希望它可以帮助别人的!你可以在这里阅读php的简写.

祝好运!

编辑

正如姚东指出的那样,您可以轻松使用正确的简写"M",而不是使用字节值.为了调试目的,我将我的字符串更改为字节值,然后又无需将其更改回来.

  • 使用`M`,而不是`MB` (29认同)
  • +1.我做不到+10.多年来这一定有多少人被卷入其中?PHP需要更加用户友好 (6认同)
  • @WanderingZombie PHP必须已经死了,谁将M用于MB?对不起,自你发布以来已经有一年多了,但是我无法保留它.+他们的评论给出了一个例子`(128MB)`,非常感谢. (4认同)
  • 是的,真正的问题是他们的例子本身是无效的! (2认同)

Eth*_*han 9

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

262,144字节恰好是256 Kibibytes.当PHP混淆时为什么PHP运行到那个值是超出我的.

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

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


归档时间:

查看次数:

88035 次

最近记录:

6 年,6 月 前