51

我要疯了。

我收到了下一条消息:

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:允许的内存大于分配的内存不是很奇怪吗?(尽管允许的内存大小远低于分配的实际允许内存)

4

9 回答 9

147

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

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

祝你好运!

编辑

正如姚东指出的那样,您可以轻松地使用正确的速记“M”,而不是使用字节值。出于调试目的,我将我的值更改为字节值,然后没有费心将其更改回来。

于 2013-06-02T00:38:12.010 回答
11

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

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

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

显示的分配量只是最近的分配尝试,即违反内存限制的分配尝试。请参阅分配 less 时 PHP 中允许的内存大小

于 2016-08-24T05:52:37.923 回答
2

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

已用完 X 字节的允许内存大小

于 2013-04-23T17:13:59.507 回答
2
于 2018-11-27T04:53:45.013 回答
1
于 2017-04-20T15:53:22.663 回答
1

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

于 2020-07-12T10:49:31.107 回答
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

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

于 2021-06-11T20:35:16.277 回答
0

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

于 2019-08-12T16:56:49.357 回答
0

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

于 2020-08-05T19:13:31.197 回答