[php] PHP Composer 업데이트“메모리를 할당 할 수 없습니다”오류 (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



답변

조금 오래되었지만 새로운 누군가가 해결책을 찾고 있다면 PHP 버전을 업데이트하면 문제를 해결할 수 있습니다.

또한 composer.lock 파일을 커밋하고 리소스를 덜 사용하는 프로덕션 환경에서 composer 설치를 수행해야합니다.

자세한 내용은 여기 :
https://github.com/composer/composer/issues/1898#issuecomment-23453850


답변

스왑 메모리가 부족한 것 같습니다.

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

아래 의견에 @ BlackBurn027이 언급 했듯이이 솔루션은 여기 에 설명되어 있습니다


답변

작곡가 문제 해결 가이드는 여기
에 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

또는 위의 방법으로 작동하지 않으면 스왑 파일을 만들 수 있습니다

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


답변

나는 같은 문제에 직면했다. 메모리가 적은 AWS 프리 마이크로 인스턴스를 사용하고 있습니다. 나는 항상 아래 옵션 중 하나를 시도하고 항상 작동합니다 (이 모든 것이기 전에 최신 버전의 작곡가가 설치되어 있는지 확인하십시오)

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

두 번째 옵션은 모든 구성 요소를 업데이트하려고 시도합니다. 업데이트가 없으면 캐시에서 패키지를 선택하고 그렇지 않으면 dist에서 선택합니다

참고 : 메모리 제한은 원하는대로 변경하십시오.

또는

크리에이트 스왑 파티션을 시도. 스왑 파티션은 리눅스가 실제 메모리가 부족할 때 가상 메모리로 사용하는 하드 드라이브의 일부입니다. 실제 파일을 사용하는 대신 Windows 스왑 파일과 비슷하지만 Linux는 하드 드라이브의 파티션을 대신 사용합니다.

도움이 되었기를 바랍니다


답변

다음 명령을 입력하십시오.

rm -rf vendor/

rm -rf composer.lock

php composer install --prefer-dist

메모리 부족 시스템에서 작동


답변

문제를 해결하는 단계는 다음과 같습니다. (즉시 빠른 SWAP 파일 할당 방법 사용)

서버 SWAP 설정 (메모리 부족 오류를 해결하기위한 Ubuntu 16.04 SWAP)

스왑, 메모리 및 디스크 크기가 이미 있는지 확인하십시오.

    sudo swapon -s
    free -m
    df -h

스왑 파일 만들기 : (4GB SWAP 메모리를 원하는 경우 1G를 4G로 변경)

    sudo fallocate -l 1G /swapfile 

스왑 파일을 확인하십시오.

    ls -lh /swapfile

스왑 파일 할당 :

    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile

스왑 가능, 메모리 및 디스크 크기를 확인하십시오.

    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

캐시에서 아이 노드 제거 : (100 : 캐시에서 아이 노드 정보를 너무 빨리 제거합니다)

        vm.vfs_cache_pressure = 50


답변

나는 방랑자와 같은 문제가 있었다. 더 많은 메모리를 할당하여 수정했습니다.

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