这里有几个类似的问题,such as this one,但问题的答案(以及我读过的其他几个问题)是:
让PHP首先创建目录。
我在我的网站上使用git
,因此不可能允许PHP“自己创建目录”。
要进行更改,我在通过SSH登录我的服务器时运行git pull origin master
命令,这使得我的cpanel用户的文件所有者我已登录为。
我需要PHP才能在某些目录中创建文件。是允许将chmod
文件夹设为777
的唯一方法,还是有更好的方式?
我对Linux权限没有很好的理解,但从我所看到的将目录和文件权限更改为777
通常不是一个好主意。此外,如果我chmod
文件夹为777
,我怀疑在运行git pull origin master
时权限将被覆盖,但我还没有对此进行测试。
答案 0 :(得分:3)
user
apache(或您使用的任何http服务器)正在运行。 apache可能会www-data
:
ps aux | grep http | cut -f 1 -d ' '
这个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'
但我会建议小组解决方案。
答案 1 :(得分:1)
这可能是你可以使用的东西 - 我自己没有尝试过,所以我不知道它是否真的有效: