如何在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中增加内存限制[重复]的主要内容,如果未能解决你的问题,请参考以下文章

增加 wamp 的内存限制

php 增加WordPress内存限制

增加内存限制 Composer 不起作用

Drupal增加内存限制设置.php

如何修改PHP的memory_limit限制

增加wp中的服务器内存限制-配置.php