php - 如何授予 PHP 对 git 创建的某些目录的写访问权限?

标签 php linux git permissions chmod

这里有几个类似的问题,such as this one ,但该问题(以及我阅读的其他几个问题)的答案是:

let PHP create the directory itself in the first place.

我在我的网站上使用 git,所以不可能让 PHP“自己创建目录”。

为了引入更改,我在通过 SSH 登录到我的服务器时运行了一个 git pull origin master 命令,这使得文件的所有者成为我登录的 cpanel 用户。

我需要 PHP 能够在某些目录中创建文件。允许此操作将文件夹 chmod 设置为 777 的唯一方法是,还是有更好的方法?

我对 Linux 权限不是很了解,但从我读到的内容来看,将目录和文件权限更改为 777 通常不是一个好主意。此外,如果我 chmod 文件夹到 777,我怀疑当我运行 git pull origin master 时权限会被覆盖,虽然我没有我对此进行了测试。

最佳答案

  1. Git 不会覆盖现有目录的权限。
  2. 你应该检查下user Apache(或您使用的任何 http 服务器)正在运行。

很可能www-data对于 Apache :

ps aux | grep http | cut -f 1 -d ' '
  1. 一旦您知道用户,https 服务器正在运行,请更改所有者。

这个 shell 命令没问题:

chown -R www-data FOLDER_PHP_NEEDS_TO_WRITE_TO

以上将文件夹的所有者设置为 www-data ,显然为 https 服务器提供了写入权限。

如果您害怕失去对该目录的控制,请通过 group 进行权限:

chgrp -R www-data FOLDER_PHP_NEEDS_TO_WRITE_TO
chmod -R g+w FOLDER_PHP_NEEDS_TO_WRITE_TO

现在你仍然是所有者,而 http 服务器可以在那里写,因为它属于这个组。你也可以用其他方式,将自己添加到 www-data组并为该组授予对所需文件夹的写入权限。

另一种选择是运行 git作为www-data :

sudo runuser -l  www-data -c 'git pull'

但我建议与小组一起解决。

关于php - 如何授予 PHP 对 git 创建的某些目录的写访问权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28503279/

相关文章:

php - JavaScript 未加载。尝试了我能想到的一切

php - 从不同的表 PHP 返回数组

php - 存储加密的用户名/密码以在没有 OAuth 的情况下在远程网站上进行身份验证

python - 在 Linux 启动时运行 python3 应用程序

git - 如何在 git add 交互式补丁模式中获得更好的帅哥?

java - 为什么将 gradle java 应用程序部署到 heroku 失败?

php - 尝试在 API 调用上使用 {} catch {} 或进行不同的处理?

linux - 在 bash -c 中设置变量

linux - 从 ps 或 who 隐藏 argv 上的密码

git jenkins 高级功能