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

我为此而发疯。

我收到下一条消息:

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

待办事项清单

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

memory_limit = 128M

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

memory_limit    128MB   128MB

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

php_value memory_limit 128M

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

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

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

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

有任何想法吗???

编辑:是的,以前完成重新启动apache。

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

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

尝试使用-1,重新启动,并且出现相同的错误。

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

monxas asked 2020-02-17T23:11:24Z
6个解决方案
130 votes

我发现我的问题与您的问题有所不同,但是我会发布此答案,以防其他人受到帮助。 定义我的memory_limit时,我使用的是memory_limit = 512MB而不是memory_limit = 536870912的速记形式,而php却无视它。 我将其更改为整数(以字节为单位),问题已解决。

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

祝好运!

编辑

正如Yaodong指出的那样,您可以轻松地使用正确的缩写“ M”,而不是使用字节值。 我出于调试目的将我的字节值更改为字节值,然后又不费力地将其改回。

kael answered 2020-02-17T23:11:55Z
9 votes

262,144字节的值是诊断的关键。 您会在整个地方的PHP问题中看到这个神奇的数字。 为什么? 因为如果您尝试使用无法使用的值来更新限制,则该值将最终以PHP作为其内存限制。 空字符串将产生此内存限制,错误的单位符号(如“ 128MB”)将取代正确的“ 128M”。

262,144字节正好是256 KB。 当PHP感到困惑时,为什么PHP会在这个价值之上发挥作用,这超出了我的理解。

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

显示的已分配数量只是最近一次的分配尝试,它违反了内存限制。 减少分配时,请参阅PHP中的允许的内存大小。

Ethan answered 2020-02-17T23:12:29Z
2 votes

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

允许的X字节内存已用尽

Tuan answered 2020-02-17T23:12:54Z
2 votes

就我而言,Mmemory_limit = 4294967296都不起作用,因此我使用以下命令将分配的内存转换为字节:[https://www.gbmb.org/mb-to-bytes]

4096M = 4294967296

php.ini:

memory_limit = 4294967296

Pratik Patel answered 2020-02-17T23:13:27Z
1 votes

我试图提高媒体上传的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文件后,便将其保存,再次登录,并再次出现登录屏幕。

我进去检查媒体上传,然后爆炸:

该图显示了wordpress媒体文件夹“添加新”框,其限制为“最大上传文件大小:2 GB”

我还没有重新启动Apache……但是一切看起来都不错。

感谢大家。

Wes Candela answered 2020-02-17T23:14:40Z
0 votes

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

daniel answered 2020-02-17T23:15:01Z
translate from https://stackoverflow.com:/questions/16175153/allowed-memory-size-of-262144-bytes-exhausted-tried-to-allocate-24576-bytes