致命错误:允许的内存大小为 33554432 字节已用尽 - Laravel 8

Posted

技术标签:

【中文标题】致命错误:允许的内存大小为 33554432 字节已用尽 - Laravel 8【英文标题】:Fatal error: Allowed memory size of 33554432 bytes exhausted - Laravel 8 【发布时间】:2021-04-08 13:50:46 【问题描述】:

我有User_controller,还有函数user_details,这个函数返回视图名称user_details

此视图包含多个细节,一般会有10到15组(行)细节显示在页面上(细节来自数据库使用user_details表)。

它工作正常,但在某些情况下,当用户详细信息达到 30 到 35 组(行)时,我在 error_log 文件中遇到错误

php 致命错误:已用完允许的 33554432 字节内存大小 (试图分配 5896720 字节)在 /laravel/framework/src/Illuminate/View/Engines/PhpEngine.php 上线 63 PHP 致命错误:允许的内存大小为 33554432 字节已用尽 (试图分配 6414336 字节)在 /vendor/symfony/http-foundation/Response.php 在第 1235 行

在下面一行返回错误:

return view('admin.views.user_details', ['user' => $user[0]
         , 'user_details' => $user_details);

【问题讨论】:

增加 php.ini 中的内存限制,~32mb 是相当低的值,我建议至少设置 128mb。 这能回答你的问题吗? Allowed memory size of 536870912 bytes exhausted in Laravel 我没有服务器访问权限,所以我无法修改服务器上的任何内容,是否还有其他方式,例如更改 laravel 文件以减少内存使用? 建议检查为什么脚本占用这么多内存。大多数情况下,这是不受欢迎的行为,因此应该更改脚本而不是内存限制。 在您的 UserController 中,向我们展示完整的 user_details() 方法。看起来您从数据库中加载了太多数据(提示:$user[0])填充内存并在刀片渲染中崩溃。 【参考方案1】:

您可以根据需要设置内存大小:

ini_set('memory_limit', '64M');` 

在做这样的事情之前,你应该先检查真正的问题。如果可能,尽量避免。

【讨论】:

【参考方案2】:

在 cpanel 中检查 memory_limit=-1

【讨论】:

【参考方案3】:

你需要打开 文件。 找到这一行:

内存限制

然后将数字更改为您想要的任何值。例如:

memory_limit = 256M

⚠️不推荐⚠️您也可以编辑 .htaccess 文件并添加/编辑这一行

php_value memory_limit 256M

就这些了?

【讨论】:

以上是关于致命错误:允许的内存大小为 33554432 字节已用尽 - Laravel 8的主要内容,如果未能解决你的问题,请参考以下文章

致命错误:Joomla 中允许的内存大小为 33554432 字节已用尽(尝试分配 32 字节)

php中允许的内存大小为33554432字节耗尽(尝试分配43148176字节)

致命错误:允许的内存大小为 268435456 字节已用尽(尝试分配 71 字节)

php - 致命错误:允许的内存大小为 134217728 字节已用尽 [重复]

使用 pear :致命错误:允许的内存大小为 134217728 字节已用尽(尝试分配 6144 字节)

PHP致命错误:允许的内存大小为134217728字节已用尽