如何在php 7中增加内存限制[重复]
Posted
技术标签:
【中文标题】如何在php 7中增加内存限制[重复]【英文标题】:How to increase memory limit in php 7 [duplicate] 【发布时间】:2020-08-05 12:24:49 【问题描述】:我遇到了错误
Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52
Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors
在尝试代码时:
composer require laravel/passport
在我的 laravel 项目中。
我已尝试按照链接中的说明进行操作,但无法增加内存限制,因为我在 /etc/ 目录中找不到文件 php.ini。我只能找到 php.ini.default 并且我已将内存限制增加到 900MB。我已重新启动 apache 以反映新配置,但限制仍显示 128MB,这是我运行命令时始终显示的:
php -r "echo ini_get('memory_limit').PHP_EOL;"
我怎样才能解决这个问题?我的php版本是7.3.9
我还必须提到,我遇到的问题是特定项目所特有的。我已经能够成功运行了
composer require laravel/passport
在另一个项目中
【问题讨论】:
php -d memory_limit=-1 composer require laravel/passport
可能会让你更幸运
如果要查找加载的ini文件,尝试运行php -r "echo php_ini_loaded_file(), PHP_EOL;"
@aynber 得到响应无法打开输入文件:composer
haydenjames.io/understanding-php-memory_limit
@iainn 在我运行命令时什么也不返回
【参考方案1】:
尝试将php.ini.default
重命名为php.ini
。如果它具有 .default
扩展名,PHP 不会加载它。您可以在控制台中运行 php --ini
以查看加载了哪些 ini 文件。您的php.ini
应该在此列表中,否则只需将内存限制设置添加到此列表中的另一个文件即可。
也可能存在两种不同的ini配置,一种用于cli,一种用于web。如果两者都有,请确保您正在编辑正确的一个。如果你安装了 php-fpm,你很可能在 /etc/php/7.3/fpm
和 /etc/php/7.3/cli
中有一个 php.ini
。
如果以上所有方法都不起作用,您可以随时尝试重新安装您的供应商:
删除您的供应商文件夹 删除您的 composer.lock(作曲家的缓存) 手动将护照要求添加到您的composer.json
(例如"laravel/passport": "^7.3"
)
最后运行composer install
,重新安装一切。
【讨论】:
“重新安装供应商”不应包含删除composer.lock
想解释一下吗?如果您在运行安装时锁不存在,afaik composer 只会重建锁。与向现有锁添加新要求相比,重建锁所需的内存更少。看看他是如何有记忆问题的,这似乎是一个有效的选择吗?
当然:如果您删除锁定文件,您将删除所有当前安装的软件包的信息。在重建锁时,所有包都将使用最新的可能版本安装(根据 composer.json 中给出的规则),而安装单个包不会更新任何其他包
另外,为什么计算 all 包的版本比单个包所需的较小子集消耗的内存更少?
在此期间作曲家需要交叉引用已安装和新版本包的兼容性。以上是关于如何在php 7中增加内存限制[重复]的主要内容,如果未能解决你的问题,请参考以下文章