191

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

私は 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
4

27 に答える 27

113

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

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

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

于 2013-10-04T10:49:55.347 に答える
41

私は同じ問題に直面しました。メモリが少ない 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 から取得します。

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

また

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

お役に立てれば

于 2013-08-08T06:40:36.267 に答える
15

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

rm -rf vendor/

rm -rf composer.lock

php composer install --prefer-dist

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

于 2014-08-30T02:26:40.387 に答える
10

vagrantでも同じ問題がありました。より多くのメモリを割り当てて修正しました。

 config.vm.provider :virtualbox do |vb|
      vb.customize ["modifyvm", :id, "--memory", "1024"]
 end
于 2014-10-01T03:53:53.990 に答える
7

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

于 2016-02-08T07:36:54.530 に答える
7

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

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
于 2014-10-01T05:28:51.703 に答える
5

以下を使用して、空き(スワップ)メモリを確認できます

free -m

total used free shared buffers cached

Mem: 2048 357 1690 0 0 237
-/+ buffers/cache: 119 1928
Swap: 0 0 0

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

/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
/sbin/swapon /var/swap.1
于 2019-09-10T09:23:17.953 に答える
4

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

于 2013-08-08T01:46:08.700 に答える
3

場合によっては、コンポーザーを自己更新することで問題が解決することがあります

php composer.phar self-update

乾杯

于 2015-09-17T18:47:32.087 に答える
2

これを試して:

/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でこれが機能します

于 2016-06-11T17:33:19.810 に答える
2

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

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

composer update --no-dev以外を実行 composer update

于 2015-12-30T03:57:25.010 に答える
-1

私は500MBのRAMに使用していますが、うまくいきます。

php -d memory_limit=-1 /usr/local/bin/composer install
于 2020-07-26T19:23:40.983 に答える
-1

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

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

于 2014-09-28T21:28:30.827 に答える
-1

これは私のために働いた:

composer のドキュメントによると、Composer 1 はより多くのメモリを使用しており、最新バージョンにアップグレードすると、はるかに優れた高速な結果が得られます。

https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors

于 2021-11-12T21:40:10.947 に答える
-2

js バンドルを無効にしてメモリを増やしてください。それはそれを修正する必要があります。私はjsバンドルを無効にして修正しました。

ありがとう

于 2019-12-01T18:54:10.630 に答える