簡體   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