使用Composer在laravel中安装通行证时无法分配内存错误

时间:2018-07-16 09:09:54

标签: php laravel composer-php laravel-passport

我正在使用命令通过作曲家在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

我遇到上述错误,如果您有任何解决方案,请帮助我。

4 个答案:

答案 0 :(得分:3)

我能够通过临时删除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看到了。

答案 1 :(得分:1)

尝试以下步骤:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

答案 2 :(得分:0)

在要求“ require”行的composer.json项目的根目录中:{{"laravel/ui": "^1.1"},然后进行composer update

答案 3 :(得分:-1)

Source

内存限制错误。

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文件中的限制(例如,对于类似Debian的系统,/etc/php5/cli/php.ini):

  

使用-1表示无限制或定义一个明确的值,例如2G   memory_limit = -1

Composer还遵守COMPOSER_MEMORY_LIMIT环境变量定义的内存限制:

  

COMPOSER_MEMORY_LIMIT = -1 composer.phar <...>

或者,您可以使用命令行参数来增加限制:

  

php -d memory_limit = -1 composer.phar <...>

当激活了外壳前叉炸弹保护功能时,在cPanel实例上也可能发生此问题。有关更多信息,请参见cPanel网站上的前叉炸弹功能文档。

This答案也可能有用。