gpt4 book ai didi

php - 如何修复错误 : mkdir(): Permission denied when running composer

转载 作者:可可西里 更新时间:2023-10-31 23:03:24 33 4
gpt4 key购买 nike

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

[ErrorException] mkdir(): Permission denied

命令如下:

composer create-project laravel/laravel mydir

我可以使用我的 ec2-user 用户名写入文件夹,但我是否需要为 composer 添加写入权限?

最佳答案

快速回答:

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

  1. 更改目录

    cd /var/www/

  2. 更改组所有权

    sudo chown -Rv root:$USER .

  3. 为我们的组添加权限

    sudo chmod -Rv g+rw .

  4. 为了压轴,继续创建你的新 laravel 项目

    composer create-project laravel/laravelprojectName--prefer-dist

恭喜,我们完成了。 :)

深度解释

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

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

  2. 我在本地主机上工作,因此不应有任何其他( guest )用户在我的文件上写入内容。

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

那么让我们开始吧:

  1. 我喜欢在我正在更改的目录中以避免错误,因此首先我们需要进入我们将在其中工作的目录。

    cd /var/www/

  2. 我们需要更改我们将在其中工作的目录的组所有权。从我们所在的目录开始,以及我们将在该目录下创建的所有 future 目录和文件。所以从现在开始,基本上任何子目录都将归我们小组所有。

    sudo chown -Rv root:$USER .

chown = command to change owner.

-R = Recursive - This is basically stating to perform the same command to all the directories within this directory.

-v = verbose - we are stating here to keep us updated by showing us what is actually happening.

root:$USER = This is were we are setting the ownership. The first word before the colon(:) states the root will be the single owner. The second word after the colon(:) states that the group owner will be $USER(the current user).

. = This just means 'here, in this directory'.

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

    sudo chmod -Rv g+rw .

chmod = command to change modifications, in this case, privileges.

-Rv = Recursive & Verbose

g = this states who will receive the modifications. In our case g-group Other options are u-user and o-other.

+ = symbolizes add

r = symbolizes read

w = symbolizes write

  1. 现在我们完成了。尝试创建一个新的 laravel 项目。

    composer create-project laravel/laravelprojectName` --prefer-dist

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

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

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

运行以下命令,您应该已经准备就绪:

sudo chmod -Rv g+x .

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

drwxrwxr-x

关于php - 如何修复错误 : mkdir(): Permission denied when running composer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30266250/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com