错误 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字节)