Error “could not delete” with Composer on Vagrant

前端 未结 16 1070
闹比i
闹比i 2020-12-14 05:45

I have a Vagrant running Linux and I\'m trying to install Symfony.

After the command composer create-project symfony/framework-standard-edition ./ \"2.5.*\"

相关标签:
16条回答
  • 2020-12-14 06:23

    For Windows users

    Wow, I can't believe how long it took me to realize this, and sadly it has happened multiple times, and I'm finally writing this note so that I and others can quickly recover next time.

    1. Just use Windows Explorer to go delete the /vendor/whatever_project_name folder instead of trying to delete it from the Vagrant command line.

    2. Then run composer update to reinstall the dependencies.

    0 讨论(0)
  • 2020-12-14 06:24

    To me it helped to install a (new) version via command line from download homepage https://getcomposer.org/download/. I can exclude some file permissions as I was root with chmod +R 0777, though I had virtualbox mounted drive. Anyway since new version worked, would mean it was version, or running a new version via php phar, and the original bin belonged to root

    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
    php composer-setup.php
    php -r "unlink('composer-setup.php');"
    
    0 讨论(0)
  • 2020-12-14 06:28

    Just run

    sudo chmod -R 777 /folder/path
    

    This will give you write access to the folder you are running composer in. I know this is an old post but this works so I have to share it.

    0 讨论(0)
  • 2020-12-14 06:29

    Just got the same issue.

    I see the problem in accessing to some local files. In my case target directory was under "root" and I'm not the root user.

    Solution

    Change permissions/owner of your files/directory.

    1. Redefine owner:

      sudo chown myuser:myuser -R /path/to

    2. Maybe there is some lack of permissions for group which you are in.
      So, try to run:

      sudo chmod g+rwX -R /path/to

    Or maybe you may run your command with "sudo" if it works for you (not recommended). :)

    P.S. Never use 777. It's not secure.

    UPD1

    Another thing, you may found out useful to solve the root of the cause, to wrap up your composer binary to run it always behalf a certain user.

    $ cat /usr/local/bin/composer
    #!/bin/bash
    
    # run composer behalf www-data user
    
    set -o pipefail
    set -o errexit
    set -o nounset
    #set -o xtrace
    
    [[ "${DEBUG:-}" = "true" ]] && set -o xtrace || true
    
    composer_debug=$([[ 'true' != "${COMPOSER_DEBUG:-}" ]] || echo '-vvv' )
    
    sudo -u www-data -- /usr/bin/composer ${composer_debug:-} $@
    
    0 讨论(0)
  • 2020-12-14 06:29

    I had this problem when provisioning the machine, which was bootstrapped to run composer install. I simply exited the VM and ran composer install on the code on my host machine and it worked.

    So, if you're facing this problem while running Composer inside the VM, just try running Composer from outside the VM.

    Update: As pointed in the comments below, this can pose some problems with different versions of packages being installed owing to the difference in system configurations between the local and Vagrant environments, so exercise appropriate caution while trying this.

    0 讨论(0)
  • 2020-12-14 06:34

    For me it caused by composer's timeout. I checked my internet speed and found it dropped to 0.7M which is nearly unusable. After I reconnected the wifi and have my internet connection speed back to normal, the errors are gone.

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