web-dev-qa-db-ja.com

PHP Composer update "メモリを割り当てることができません"エラー(Laravel 4を使用)

私はこれを解決できません。

私はLinode 1G RAM基本計画を使用しています。 Composerを介してパッケージをインストールしようとしても、私に許可されません。 PHP.iniでメモリ制限が「-1」に設定されています

これをインストールするためにできることは他にありますか?

Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing thujohn/rss (dev-master df80a7d)
    Downloading: 100%         
PHP Fatal error:  Uncaught exception 'ErrorException' with message 'proc_open(): fork failed - Cannot allocate memory' in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:975
Stack trace:
#0 [internal function]: Composer\Util\ErrorHandler::handle(2, 'proc_open(): fo...', 'phar:///usr/loc...', 975, Array)
#1 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(975): proc_open('stty -a | grep ...', Array, NULL, NULL, NULL, Array)
#2 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(853): Symfony\Component\Console\Application->getSttyColumns()
#3 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(818): Symfony\Component\Console\Application->getTerminalDimensions()
#4 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(752): Symfony\Component\Console\Application->getTerminalWidth()
#5 phar:///usr/local/bin/com in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php on line 975

Fatal error: Uncaught exception 'ErrorException' with message 'proc_open(): fork failed - Cannot allocate memory' in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:975
Stack trace:
#0 [internal function]: Composer\Util\ErrorHandler::handle(2, 'proc_open(): fo...', 'phar:///usr/loc...', 975, Array)
#1 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(975): proc_open('stty -a | grep ...', Array, NULL, NULL, NULL, Array)
#2 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(853): Symfony\Component\Console\Application->getSttyColumns()
#3 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(818): Symfony\Component\Console\Application->getTerminalDimensions()
#4 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(752): Symfony\Component\Console\Application->getTerminalWidth()
#5 phar:///usr/local/bin/com in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php on line 975
110
ericbae

少し古いですが、新しい人が解決策を探している場合に備えて、PHPバージョンを更新すると問題を解決できます。

また、composer.lockファイルをコミットし、リソースをあまり使用しない本番環境でcomposerインストールを実行する必要があります。

詳細はこちら: https://github.com/composer/composer/issues/1898#issuecomment-2345385

64
fl3x7

スワップメモリ​​が不足しているようです。これを試してください

/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
/sbin/swapon /var/swap.1

以下のコメントで@ BlackBurn027が言及したように、この解決策は here

271

私は同じ問題に直面しました。メモリが少ないAWS Free Microinstanceを使用しています。私は常に以下のオプションのいずれかを試してみて、常に動作します(これの前に、composerの最新バージョンがインストールされているかどうかを確認してください)

Sudo php -dmemory_limit=750M composer.phar update

または、ベンダーフォルダーの内容を削除して、composer更新を試してください。

Sudo rm -rf vendor
Sudo php -dmemory_limit=750M composer.phar update --no-scripts --prefer-dist
Sudo php artisan --dump-autoload

2番目のオプションは、すべてのコンポーネントを更新しようとします。更新がない場合、キャッシュからパッケージを取得し、そうでない場合はdistから取得します

注:選択に応じてメモリ制限を変更してください。

または

swap partitionを作成して試してください。スワップパーティションは、Linuxが物理メモリを使い果たしたときに仮想メモリとして使用するハードドライブの一部です。実際のファイルを使用する代わりに、Windowsのスワップファイルのみに似ています。Linuxは、代わりにハードドライブのパーティションを使用します。

お役に立てれば

34
Abishek

As composerトラブルシューティングガイド here これは、VPSのメモリが不足し、スワップスペースが有効になっていないために発生する可能性があります。

free -m

スワップを有効にするには、たとえば次を使用できます。

Sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
Sudo /sbin/mkswap /var/swap.1
Sudo /sbin/swapon /var/swap.1
23
Umair Hamid

簡単に、次のコマンドを入力します。

rm -rf vendor/

rm -rf composer.lock

php composer install --prefer-dist

低メモリのマシンで動作するはずです

12
insign

浮浪者にも同じ問題がありました。より多くのメモリを割り当てることで修正しました。

 config.vm.provider :virtualbox do |vb|
      vb.customize ["modifyvm", :id, "--memory", "1024"]
 end
10
Yann叶

それを試してください:

/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024

/sbin/mkswap /var/swap.1

/sbin/swapon /var/swap.1
7
Ayo 'Lana

毎回私にとってうまくいくことがわかった回避策は次のとおりです。

df -h 
dd if=/dev/zero of=/swapfile bs=1M count=1024
Sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
mkswap /swapfile
Sudo chmod 600 /swapfile
Sudo mkswap /swapfile
Sudo swapon /swapfile
echo 'echo "/swapfile  none  swap  defaults  0  0" >> /etc/fstab' | Sudo sh

free -m

confirm u see your swap there:
total used free shared buffers cached
Mem: 494 335 158 0 19 62
-/+ buffers/cache: 254 240
Swap: 1023 3 1020

watch free -m
5
Goran

問題を修正する手順は次のとおりです:(インスタント高速SWAPファイル割り当て方法を使用)

サーバーSWAPセットアップ(メモリ不足エラーを修正するためのUbuntu 16.04 SWAP)

スワップ、メモリ、ディスクサイズが既にあるかどうかを確認します。

    Sudo swapon -s
    free -m
    df -h

スワップファイルの作成:(4GBのスワップメモリ​​が必要な場合は、1Gを4Gに変更します)

    Sudo fallocate -l 1G /swapfile 

スワップファイルを確認します。

    ls -lh /swapfile

スワップファイルの割り当て:

    Sudo chmod 600 /swapfile
    Sudo mkswap /swapfile
    Sudo swapon /swapfile

スワップOK、メモリ、およびディスクサイズを確認します。

    Sudo swapon -s
    free -m
    df -h

システムの再起動時にスワップファイルを添付:

    Sudo nano /etc/fstab
        /swapfile   none    swap    sw    0   0

スワップファイル設定の調整:

    cat /proc/sys/vm/swappiness
    cat /proc/sys/vm/vfs_cache_pressure

    Sudo sysctl vm.swappiness=10
    Sudo sysctl vm.vfs_cache_pressure=50

    Sudo nano /etc/sysctl.conf

SWAPファイルの優先度:(0-100%=> 0:スワップに入れない、100:SWAPに入れてRAMを解放する)

        vm.swappiness=10

キャッシュからiノードを削除する:(100:システムはキャッシュからiノード情報をすぐに削除します)

        vm.vfs_cache_pressure = 50
4
Tarik

これを試して:

/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
/sbin/swapon /var/swap.1

Centos 6でのこの作業

4
Adonias Vasquez

これは、1GB以下のサーバーインスタンスで繰り返し発生する問題のようです。プロセスとTweakスワップ設定をシャットダウンしようとする以外に、ローカルマシンにインストールしてアップロードすることもできます。

4
Makita

時には自己更新composerにより問題を解決します

php composer.phar self-update

乾杯

3
Titogelo

私はほとんどの場合この状況に陥りますので、通常はスワップメモリ​​を設定する手順に従いました。

しかし今、私は私のために働いた簡単な代替トリックを見つけました。

composer update --no-dev以外のcomposer updateを実行します

2
Bastin Robin

Vagrantで同じ問題を解決しました。 memory_limitの値を増やしてcomposerキャッシュを削除します:Sudo rm -R〜/ .composerそして最後に浮浪者のリロード。

2
oussaka

私の512MBホスティングでphp composer.pharの更新で同じ問題があります。

php composer.phar installで解決

1

試してみる

Sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024 && Sudo /sbin/mkswap /var/swap.1 && Sudo /sbin/swapon /var/swap.1

1
jeidison farias

ベンダーフォルダーおよびcomposer.lockファイルを削除してみて、コマンドcomposer clear-cacheを実行してからcomposer installを実行しました。したがって、エラーなしで動作します。

1
Manjunath A

PHP memory_limitをデフォルトの128Mから512Mに増やし、サーバーを再起動しました。これで問題は解決しました。

0
Aris

DigitalOcean でホストされている最も安価なサーバー(512MB RAM)で同様の問題が発生し、同じサーバーでJenkins CIを実行していました。 Jenkinsインスタンスを停止した後、composer installコマンドが機能しました(ポイントまでは、mcrypt拡張機能が既にインストールされているだけでなく、失敗しました!)。

サーバーで別のアプリを実行している場合は、おそらくそれを停止してコマンドを再実行する価値があります。

0
Chris
composer update

Loading composer repositories with package information
Updating dependencies (including require-dev)

> mmap()が失敗しました:[12]メモリを割り当てることができません

サーバーのメモリを更新し、「4G」を必要とする4GB RAMの変更[サーバータイプを変更するか、RAMを追加してください]

2ファイルを編集する必要があります


コマンドで

# cd /var/www/html
# nano .htaccess

"memory_limit 756M”4Gに編集します


PHP 7.0のPHP ini

# cd ~
# php –-ini
# Sudo nano /etc/php-7.0.ini

memory_limit = 128Mから4G

#AWS #AMAZONLINUX#MAGENTO2#PHP7.

0
SUNNETmedia

スワップを作成し、composerコマンドを再度実行します。私はそれがあなたのために働くことを願っています。

 $ dd if=/dev/zero of=/swapfile bs=1024 count=512k
 $ mkswap /swapfile
 $ swapon /swapfile
 $ echo "/swapfile       none    swap    sw      0       0 " >> /etc/fstab
 $ echo 0 > /proc/sys/vm/swappiness
 $ chown root:root /swapfile
 $ chmod 0600 /swapfile
0
nixon1333

php.iniファイルを編集して、memory_limit値を増やします。

memory_limit = 1G

この問題を解決します。

0
Amjith