Php 如何修复错误:mkdir():运行composer时权限被拒绝

Php 如何修复错误:mkdir():运行composer时权限被拒绝,php,amazon-ec2,composer-php,Php,Amazon Ec2,Composer Php,我有一个ec2图像,在尝试创建新的laravel项目时出现以下错误 [ErrorException]mkdir():权限被拒绝 命令如下: composer create-project laravel/laravel mydir 我可以使用ec2用户用户名写入文件夹,但我是否需要为composer添加写入权限 添加“www”组并将您的用户添加到此组 sudo groupadd www sudo usermod -a -G www ec2-user 注销/登录 设置所有权和写入权限 sud

我有一个ec2图像,在尝试创建新的laravel项目时出现以下错误

[ErrorException]mkdir():权限被拒绝

命令如下:

composer create-project laravel/laravel mydir
我可以使用ec2用户用户名写入文件夹,但我是否需要为composer添加写入权限

  • 添加“www”组并将您的用户添加到此组

    sudo groupadd www
    sudo usermod -a -G www ec2-user
    
  • 注销/登录

  • 设置所有权和写入权限

    sudo chown -R root:www /var/www
    sudo chmod 2775 /var/www
    find /var/www -type d -exec sudo chmod 2775 {} +
    find /var/www -type f -exec sudo chmod 0664 {} +
    

  • 引用:

    确保您具有读/写文件夹权限。这对我有用

    就像在ubuntu中一样

     var/www/html
    
    所以,如果您想在
    html
    文件夹中创建dir,那么首先要授予
    html
    文件夹的权限。那你就完了。谢谢

    快速回答:

    出于安全原因,让我们将
    root
    保留为所有者,只允许我们自己在将要工作的区域内读、写和执行

  • 更改目录

    cd/var/www/

  • 更改组所有权

    sudo chown-Rv root:$USER.

  • 给我们的团队增加特权

    sudo chmod-rvg+rw.

  • 在大结局中,继续创建您的新laravel项目

    composer创建项目laravel/laravel
    projectName
    ——首选dist

  • 祝贺你,我们完成了。:)

    深入解释

    解决方案背后的解释: 默认情况下,您有两个用户
    root
    $USER
    (这是全局变量,但实际名称是您输入的用户名)。创建的每个用户都有一个组。因此,如果我的用户名是
    john
    ,我有一个名为
    john
    的组。 有很多方法可以解决这个问题,但我选择这条路线有几个原因:

  • 出于安全原因,我仍然希望
    root
    成为文件的所有者

  • 我在本地主机中工作,因此不应该有任何其他(来宾)用户在我的文件上写入

  • 为了实现这一点,我们需要编辑组所有权并添加适当的权限。我们将让
    其他人保持原样,只允许他们读取和执行文件

    让我们开始吧:

  • 我喜欢在我正在修改的目录中,以避免出错,因此首先我们需要输入我们将要使用的目录

    cd/var/www/

  • 我们需要更改我们将使用的目录的组所有权。从我们所在的目录以及我们将在此目录下创建的所有未来目录和文件开始。因此,从现在起,任何子目录基本上都将由我们组拥有

    sudo chown-Rv root:$USER.

  • chown
    =更改所有者的命令

    -R
    =Recursive-这基本上表示对该目录中的所有目录执行相同的命令

    -v
    =verbose-我们在这里陈述,通过向我们展示实际发生的事情来保持我们的最新状态

    root:$USER
    =这是我们正在设置的所有权。冒号(:)前的第一个单词表示
    将是单一所有者。冒号(:)后面的第二个单词表示组所有者将是
    $USER
    (当前用户)

    =这只是表示“在这里,在这个目录中”

  • 现在,我们将向组添加正确的权限。请记住,这是我们允许
    root
    成为主要所有者的地方,同时只允许我们自己创建更改(当然,除了
    root
    )。正如我前面提到的,这不允许其他用户创建任何更改。
    sudo chmod-rvg+rw.

  • chmod
    =更改修改的命令,在本例中为特权

    -Rv
    =递归和冗长

    g
    =这表示将接收修改的人。在我们的例子中,g-group的其他选项是u-user和o-Other

    +
    =符号表示添加

    r
    =表示读取

    w
    =表示写入

  • 现在我们完成了。尝试创建一个新的laravel项目。
    composer创建项目laravel/laravel
    projectName`--首选区域

  • 注意:如果这不起作用,请在
    /var/www/
    目录中输入命令
    ls-al | grep$USER

    如果你得到这个:
    drwxrw-r-x

    您缺少该组的可执行(
    x
    )权限。第一个
    x
    是给用户的,最后一个
    x
    是给其他人的。该组应有中间
    x

    运行以下命令,您应该全部设置为go:

    sudo chmod-rvg+x.

    现在,如果您运行
    ls-al | grep$USER
    ,您应该会得到:


    drwxrwxr-x

    将cd刻录到当前要安装laravel的目录,并使用更改目录访问权限

    sudo chmod -R 777 ./
    

    键入您的密码,您就可以继续安装了

    这是一个流浪者的问题框

    如果您试图在新的vagrant框中安装带有composer的内容,则可能是在安装vagrant时指定了允许使用的路径

    因此,请检查您的个人.yml文件,以便在下面进行检查 \ansible\vars

    你有这样的东西

    vagrant_local:
      vm:
        name: oxideshop
        hostname: oxideshop.local
        aliases:
          - www.oxideshop.local
        app_shared_folder:
          source: oxideshop
          target: /var/www/oxideshop
    
    您必须确保app_shared_文件夹目标与用于composer安装的相同

    示例:

    作曲家创建项目oxid esales/oxideshop项目 /var/www/oxideshopdev-b-6.1-ce


    确保您具有读/写文件夹权限
    $ sudo chown -R tubai:www-data /home/tubai/firstlara/
    
    sudo mkdir <ProjectDir> 
    sudo chgrp vagrant <ProjectDir>
    sudo chmod g+wx <ProjectDir>
    composer create-project --prefer-dist laravel/laravel <Project>
    
    cd /var/www
    
    sudo chown -R $USER:www-data html/
    
    sudo chmod -R 775 html/
    
    sudo composer create-project laravel/laravel mydir
    
      cat /etc/group | grep www
    
      # Under your user account, change directories
      cd /var/www/
      # Change group ownership
      sudo chown -Rv root:www-data .
      # Give all the privileges to the group
      sudo chmod -Rv g+rwx .
      # Add your user name to www-data group, use 'who' command to get your username
      sudo usermod -a -G www-data your_user_name
      # Verify that your user name is in the www-data group by typing
      group your_user_name
      # Very important, logout of the system and come back to this folder
      # Do the the laravel install
      composer create-project --prefer-dist laravel/laravel projectName
      # Not finished yet! recursive make the www-data the group owner of projecName which the folder in which Laravel site resides by now
      sudo chown -R :www-data projectName