繁体   English   中英

使用composer在laravel中安装passport时无法分配内存错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM