使用 Laravel Artisan 和文件权限

Using Laravel Artisan and file permissions

我是 Laravel 的新手,我发现这个框架很棒。

Artisan 也很棒,但使用起来有点问题。

假设我像这样使用 Artisan 创建了一个新控制器

php artisan make:controller Test

app/Http/Controllers 中将有一个名为 Test 的新文件,该文件的权限将为 root:root

当我想用我的编辑器编辑这个文件时 ftp 我不能,因为我没有以 root 身份登录。

有没有什么方法可以告诉 Artisan 使用 www-data 组创建文件(不执行 chown 命令)?

这是因为你运行一个root用户的命令,尝试运行你通过ftp编辑项目的用户的命令。

因为你有 root shell 访问权限,下面的命令将使用 www-data 用户执行另一个命令 -

sudo -u www-data php artisan make:controller Test

www-data 替换为您的 Web 服务器运行时使用的任何用户名, 您登录 FTP 服务所用的用户名。

执行此操作后,控制器将归 www-data 所有,这正是您想要的。

注意:不要 曾经 运行 从互联网上复制粘贴的命令,而不知道它们到底做了什么,尤其是在根 shell 中。 在这种情况下,-u 参数告诉 sudo 以特定用户而不是 root 用户的身份执行命令。 来自联机帮助页:

-u user, --user=user
             Run the command as a user other than the default target user (usually root ). The user may be
             either a user name or a numeric user ID (UID) prefixed with the ‘#’ character (e.g.  #0 for UID
             0).  When running commands as a UID, many shells require that the ‘#’ be escaped with a backslash
             (‘\’).  Some security policies may restrict UIDs to those listed in the password database.  The
             sudoers policy allows UIDs that are not in the password database as long as the targetpw option
             is not set.  Other security policies may not support this.

我知道这是一个非常古老的 post,但我也真的建议任何人再次编辑您的 Laravel 文件而不是 FTP。在 Laravel 之前的日子里,我曾经这样做过,但从来没有成功过。

超过 FTP 的编辑可能会遇到各种各样的问题——在编辑过程中断开连接是其中最少的一个。安全和实时开发错误是一个更大的问题。

在您的本地或开发环境中开发,commit/push 到 git,然后通过管道传输到您的服务器或处理您的 FTP 上传和事后清理。如果您的主机允许,管道是您最好的选择。我们为自己使用 Atlassian BitBucket,但大多数主机的设置和部署应该相对相似。请与您的房东联系以获取有关其管道设置的文档:

https://www.atlassian.com/continuous-delivery/tutorials/bitbucket-pipelines

还有一些在线教程可以直接通过管道传输到 FTP(如果在共享主机上,比如):

https://www.savjee.be/2016/06/Deploying-website-to-ftp-or-amazon-s3-with-BitBucket-Pipelines/