[英]PHP Composer update "cannot allocate memory" error (using Laravel 4)
[英]Can not allocate memory error when install passport in laravel using composer
我正在通过 Composer 使用命令在 laravel 中安装通行证
$ composer require laravel/passport
Using version ^6.0 for laravel/passport
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
mmap() failed: [12] Cannot allocate memory
mmap() failed: [12] Cannot allocate memory
Fatal error: Out of memory (allocated 483401728) (tried to allocate 8388608 bytes) in phar:///opt/cpanel/composer/bin/composer/src/Composer/DependencyResolver/Solver.php on line 220
我遇到了以上错误,如果您有任何解决方案,请帮助我。
我能够通过暂时删除 PHP 的内存限制来安装 Passport。 我在这里找到了这个想法: https : //laravel.io/forum/02-11-2014-composer-running-out-of-memory
$ php -d memory_limit=-1 /usr/local/bin/composer require laravel/passport --verbose --profile
我喜欢这个解决方案,因为它只覆盖 PHP 限制一次,所以它允许您向前推进而不会产生任何持久影响。 这将允许您等待,看看您以后是否会继续遇到问题,例如在生产环境中等。
我相信默认的 PHP 安装分配了 500 MB~ RAM,当我运行上面的命令时,它消耗了 712 MB 的 RAM。
额外说明
在上面的 URL 中,还提到在生产环境中提交
composer.lock
文件。 从历史上看,例如,如果您在 MacOS 或 Windows 上开发本地机器,而您的生产环境是 Linux,这可能是一个问题。 这可能不太可能,但由于任意软件包根据检测到的操作系统确定要选择的依赖项,因此人们可能会遇到问题。 如果您提交锁定文件,则您正在缓存包/版本。 性能优势将由此产生,但缓存会产生刚性。我不确定我所说的话的真实可能性。 我说的是
composer
,但我已经用npm
和 JavaScript 看到了它。
尝试以下步骤:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
在 composer.json 项目的根目录中的 require "require": { "laravel/ui": "^1.1"
} 和接下来, composer update
内存限制错误。
Composer 有时可能会在某些命令上失败并显示以下消息:
PHP 致命错误:XXXXXX 字节的允许内存大小已用完 <...>
在这种情况下,应该增加 PHP memory_limit。
Note: Composer internally increases the `memory_limit` to 1.5G.
要获取当前的 memory_limit 值,请运行:
php -r "echo ini_get('memory_limit').PHP_EOL;"
尝试增加php.ini
文件中的限制(例如/etc/php5/cli/php.ini
用于类似 Debian 的系统):
使用 -1 表示无限制或定义一个显式值,如 2G memory_limit = -1
Composer 还遵守由COMPOSER_MEMORY_LIMIT
环境变量定义的内存限制:
COMPOSER_MEMORY_LIMIT=-1 composer.phar <...>
或者,您可以使用命令行参数增加限制:
php -d memory_limit=-1 composer.phar <...>
当 shell fork 炸弹保护被激活时,这个问题也可能发生在 cPanel 实例上。 有关更多信息,请参阅 cPanel 站点上的 fork 炸弹功能文档。
这个答案也可能有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.