这里有几个类似的问题,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
时权限会被覆盖,虽然我没有我对此进行了测试。
最佳答案
- Git 不会覆盖现有目录的权限。
- 你应该检查下
user
Apache(或您使用的任何 http 服务器)正在运行。
很可能www-data
对于 Apache :
ps aux | grep http | cut -f 1 -d ' '
- 一旦您知道用户,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/