使用 Laravel Artisan 和文件权限

Posted

技术标签:

【中文标题】使用 Laravel Artisan 和文件权限【英文标题】:Using Laravel Artisan and file permissions 【发布时间】:2016-03-29 20:01:09 【问题描述】:

我是 Laravel 的新手,我觉得这个框架很棒。

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

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

php artisan make:controller Test

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

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

有什么方法可以告诉 Artisan 创建带有 www-data 组的文件(例如,不执行 chown 命令)?

【问题讨论】:

你在root用户下编程吗?哇哦,耐莉! 【参考方案1】:

这是因为您从 root 用户运行命令,尝试从您用于通过 ftp 编辑项目的用户运行命令。

【讨论】:

【参考方案2】:

由于你有 root shell 访问权限,以下命令将使用www-data 用户执行另一个 -

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

www-data 替换为您的网络服务器使用的用户名,您登录 FTP 服务时使用的用户名。

当您这样做时,控制器将归 www-data 所有,这就是您想要的。

注意:不要永远运行从互联网复制粘贴的命令,而不知道它们的确切作用,尤其是在 root 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.

【讨论】:

我知道这是 7 岁,但这个答案仍然适用。在我的新公司遇到一个问题,整个代码库都归 root 所有,我可以在 ci/cd 部署中编写其中的一些脚本,但不是全部。这实际上很有帮助。【参考方案3】:

我知道这是一篇很老的帖子,但我也真的建议任何人再次通过 FTP 编辑你的 Laravel 文件。在我使用 Laravel 之前的日子里,我曾经这样做过,但它从来没有结束过。

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

在您的本地或开发环境中开发,提交/推送到 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/

【讨论】:

以上是关于使用 Laravel Artisan 和文件权限的主要内容,如果未能解决你的问题,请参考以下文章

解决laravel环境在Ubuntu下使用php artisan 创建文件后无法在phpstorm中编辑的问题

远程 AWS EB 实例上的“php artisan migrate”上的 PHP 致命错误:laravel.log:权限被拒绝

在输入'php artisan storage:link'命令后,如何使用Laravel链接存储文件夹在Heroku上显示图像?

如何在不使用 artisan 的情况下在远程 ubuntu 服务器上连接 Laravel 7.12 项目的数据库

如何手动使用 composer, artisan ...(Laravel) php 命令

Laravel中间件