错误 PHP - 无法分配内存(laravel + aws)

Posted

技术标签:

【中文标题】错误 PHP - 无法分配内存(laravel + aws)【英文标题】:ERROR PHP - Cannot allocate memory (laravel + aws) 【发布时间】:2018-06-23 15:09:46 【问题描述】:

我正在亚马逊上创建一个服务器,但我遇到了一个我无法解决的错误。

我的错误图片:

对于那些不知道该命令的人,它只是运行一个用于在数据库中创建表的脚本。我不明白在数据库中创建 50 个表的简单例程如何消耗这么多资源。

当我尝试运行命令时出现错误:php artisan migrate 我有 50 次迁移,但我认为问题不在于迁移量。

几个小时以来,我一直在谷歌上寻找解决方案,但我找不到。 我已经试过了:php.ini文件中的memory_limit = 128M,并没有解决问题

在我的本地机器上一切正常。我正在使用来自 amazon aws 的 t2micro(免费)机器。

【问题讨论】:

打开system monitor并转到resources选项卡,重新运行PHP并监控资源使用/您有多少? 试试这个,它对我有用。查看投票最多的答案:***.com/questions/18116261/… 其他命令如何为您工作,例如 php artisan route:list ? @RenatoSouzadeOliveira 正如我的回答所示,这似乎表明您的安装存在问题。我以前遇到过这个问题,我不得不使用下面指定的命令重新创建我的 Laravel 类。我不得不停止我的 nginx mysql 和其他 php-Fpm 给作曲家服务器资源来完成自动加载。完成后,它运行良好。 为什么不在中型或大型实例类型上尝试一下,看看它的表现如何? 【参考方案1】:

您的 AWS 中是否启用了“交换”?你的 PHP 版本是什么?因为PHP“5.4.11”也有同样的bug,还有composer版本是什么?

我首先想说从 php.ini 增加你的内存限制并检查时间限制:

memory_limit =  2 GB ?
set_time_limit(0);
ini_set('memory_limit', '20000M');

【讨论】:

我使用的是 php 7.0.22,Composer 版本 1.6.2。我会尽量增加时间看看会发生什么。 由于 OP 在命令行上运行它,我认为注意命令行选项以避免编辑 php.ini 的额外步骤会有所帮助:$ php -d memory_limit=20000M artisan migrate 868220928 byte 表示 0.86 GB,尝试将限制设为 2GB【参考方案2】:

听起来你的 laravel 安装有问题。如果不是本地机器,这很难诊断,但请尝试以下命令从 composer 和 laravel 清除缓存:

dump-autoload laravel 安装。这会重新生成需要包含在项目中的所有类的列表

composer dump-autoload

清除你的 laravel 安装缓存。

php artisan cache:clear

【讨论】:

这似乎不太可能 - 如果这是一个问题,我预计会出现“无法加载类 XXX”的错误。您是否知道缓存中可能会导致内存泄漏的某些内容? @HPierce 我今天安装的东西是 laravel 广播。广播使用redis。但我什至没有在亚马逊服务器上安装 redis。在 laravel 合成器中被引用的简单事实是否已经消耗了内存? 如果你甚至不能运行 php artisan route:list 那么这意味着你的安装有问题。我有 2 个数据库(其中一个数据库大小为 20GB)一个 python 应用程序,我的 t2.micro 上有 2 个 Web 服务器托管,没有问题。尝试在交互模式下运行 php (php -a) 并在 php 命令提示符下运行类似 phpinfo() 的命令。如果可行,那么我怀疑您的 laravel 安装存在问题。 @RenatoSouzadeOliveira,你试过我提供的命令了吗?他们有帮助吗?【参考方案3】:

OP 的解决方案。

导致问题的原因是 mysql 的连接驱动器。使用此命令一切正常:

apt-get install php7.0-mysql

【讨论】:

你拯救了我的一天 +1

以上是关于错误 PHP - 无法分配内存(laravel + aws)的主要内容,如果未能解决你的问题,请参考以下文章

第二个laravel项目(v5.4)PHP致命错误:允许的内存大小为134217728字节已用尽(试图分配262144字节)

安装Laravel收银员的PHP致命内存错误[重复]

在上传大图像时,蛋糕php中的内存分配问题

是啥导致 PHP 中的“无法为池分配内存”?

PHP致命错误:内存不足(分配80740352)(试图分配12352字节)

WordPress PHP致命错误:内存不足(分配2097152)(试图分配4096字节)