PHP Composer update “cannot allocate memory” error (using Laravel 4)

后端 未结 26 1371
天命终不由人
天命终不由人 2020-11-29 14:46

I just can\'t solve this one.

I\'m on Linode 1G RAM basic plan. Trying to install a package via Composer and it\'s not letting me. My memory limit is set to \"-1\" o

相关标签:
26条回答
  • 2020-11-29 15:31

    I increased the PHP memory_limit from the default 128M to 512M and restart the server. That solved the problem.

    0 讨论(0)
  • 2020-11-29 15:31

    I solved the same problem in Vagrant. I increased the value of memory_limit and delete composer cache: sudo rm -R ~/.composer and finally vagrant reload.

    0 讨论(0)
  • 2020-11-29 15:33

    Here are the steps to fix the problem: (instant fast SWAP file allocation method used)

    Server SWAP Setup (Ubuntu 16.04 SWAP to Fix Out of Memory Errors)

    Check if you have swap already, memory and disk size:

        sudo swapon -s
        free -m
        df -h
    

    Make swap file: (change 1G to 4G if you want 4GB SWAP memory)

        sudo fallocate -l 1G /swapfile 
    

    Check swap file:

        ls -lh /swapfile
    

    Assign Swap File:

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

    Check if swap OK, memory and disk size:

        sudo swapon -s
        free -m
        df -h
    

    Attach Swap File on System Restart:

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

    Adjust Swap File Settings:

        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 File Priority: (0-100% => 0: Don't put to swap, 100: Put on SWAP and free the RAM)

            vm.swappiness=10
    

    Remove inode from cache: (100: system removes inode information from the cache too quickly)

            vm.vfs_cache_pressure = 50
    
    0 讨论(0)
  • 2020-11-29 15:33

    Here is the workaround that I found that works for me every time:

    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
    
    0 讨论(0)
  • 2020-11-29 15:33

    have same problem with php composer.phar update on my 512mb hosting.

    solved with php composer.phar install

    0 讨论(0)
  • 2020-11-29 15:34

    I have faced the same issue. I am on a AWS Free Microinstance which has less memory. I always try one of the below options and it always works (Before all this please check if you have the latest version of composer installed)

    sudo php -dmemory_limit=750M composer.phar update
    

    or remove the contents of the vendor folder and try composer update.

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

    The second option tries to update all the components, if there is no update, it picks up the package from the cache else picks up from the dist

    Note: Please change the memory limit as per your choice.

    or

    Create a swap partition and try. Swap partition is the portion of the hard drive that linux uses as virtual memory when it runs out of physical memory. It's similar to the windows swap file only instead of using an actual file, linux uses a partition on the hard drive instead.

    Hope this helps

    0 讨论(0)
提交回复
热议问题