Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

sudo composer install vs. composer install

I run sudo composer install I got this warning

Do not run Composer as root/super user! See https://getcomposer.org/root for details

I tried just composer install I got this error

[ErrorException] file_put_contents(/Applications/MAMP/htdocs/code/bheng/vendor/composer/installed.json): faile d to open stream: Permission denied

Here is the current permission set on my Laravel folder

total 1872
-rw-r--r--   1 bheng  staff     777 Feb 27 20:18 phpunit.xml
-rw-r--r--   1 bheng  staff      87 Feb 27 20:18 phpspec.yml
-rw-r--r--   1 bheng  staff     481 Feb 27 20:18 package.json
drwxr-xr-x   3 bheng  staff     102 Feb 27 20:18 note
-rw-r--r--   1 bheng  staff     967 Feb 27 20:18 md-bheng-readme.txt
-rw-r--r--   1 bheng  staff     503 Feb 27 20:18 gulpfile.js
-rw-r--r--   1 bheng  staff      26 Feb 27 20:18 contributors.txt
-rw-r--r--   1 bheng  staff    1635 Feb 27 20:18 artisan
-rw-r--r--   1 bheng  staff      43 Feb 27 20:18 Procfile
-rw-r--r--   1 bheng  staff    5634 Feb 27 20:18 Gruntfile.js
drwxr-xr-x   4 bheng  staff     136 Feb 27 20:18 tests
drwxr-xr-x   5 bheng  staff     170 Feb 27 20:18 storage
drwxr-xr-x   4 bheng  staff     136 Feb 27 20:18 sql
-rw-r--r--   1 bheng  staff     560 Feb 27 20:18 server.php
drwxr-xr-x   5 bheng  staff     170 Feb 27 20:18 resources
-rw-r--r--   1 bheng  staff     105 Feb 27 20:18 pull.sh
drwxr-xr-x   7 bheng  staff     238 Mar  1 14:46 bootstrap
-rw-r--r--@  1 bheng  staff       0 Mar  1 14:46 Icon?
drwxr-xr-x  22 bheng  staff     748 Mar  2 11:47 app
drwxrwxrwx@ 27 bheng  staff     918 Mar  3 14:55 public
drwxr-xr-x   8 bheng  staff     272 Mar  6 13:25 database
-rw-------@  1 bheng  staff     405 Mar 14 09:29 id_rsa.pub
-rw-------   1 bheng  staff    1766 Mar 14 09:29 id_rsa
-rw-r--r--   1 bheng  staff  126713 Mar 14 10:00 composer.lock
drwxr-xr-x  18 bheng  staff     612 Mar 28 21:24 config
-rw-r--r--   1 bheng  staff    1022 Mar 30 12:21 composer.json
drwxr-xr-x  32 bheng  staff    1088 Mar 30 12:21 vendor

Here is what inside my composer.json

{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
    "laravel/framework": "5.1.0",
    "intervention/image": "^2.3",
    "laravelcollective/remote": "5.1.*",
    "doctrine/dbal": "^2.3",
    "league/flysystem-sftp": "^1.0"
    },
    "require-dev": {
        "phpunit/phpunit": "~4.0",
        "phpspec/phpspec": "~2.1"
        },
        "autoload": {
            "classmap": [ "database" ],

            "psr-4": {
                "App\\": "app/"
            }
            },
            "autoload-dev": {
                "classmap": [
                "tests/TestCase.php"
                ]
                },
                "scripts": {
                    "post-install-cmd": [
                    "php artisan clear-compiled",
                    "php artisan optimize"
                    ],
                    "post-update-cmd": [
                    "php artisan clear-compiled",
                    "php artisan optimize"
                    ],
                    "post-create-project-cmd": [
                    "php -r \"copy('.env.example', '.env');\"",
                    "php artisan key:generate"
                    ]
                    },
                    "config": {
                        "preferred-install": "dist"
                    }
                }

How do I fix this ? Do I need to chmod any folders ?

like image 856
code-8 Avatar asked Mar 30 '17 16:03

code-8


1 Answers

Delete your vendor directory and run composer install again.

You're getting the permission denied error because the vendor/composer/installed.json file was created by the root user when you ran sudo composer install, so now when you run composer install your user doesn't have permission to edit that file.

Update:

If you are working within a live document root (you shouldn't be - read up on atomic deployment) then you can try chown on the vendor directory and its contents to avoid any downtime between the deletion and re-running composer install:

$ sudo chown -R myuser: vendor/

Replace myuser with your username.

like image 51
Andy Avatar answered Oct 19 '22 08:10

Andy