如何给git创建的某些目录提供PHP写访问权限?

时间:2015-02-13 15:44:05

标签: php linux git permissions chmod

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

  

让PHP首先创建目录。

我在我的网站上使用git,因此不可能允许PHP“自己创建目录”。

要进行更改,我在通过SSH登录我的服务器时运行git pull origin master命令,这使得我的cpanel用户的文件所有者我已登录为。

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

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

2 个答案:

答案 0 :(得分:3)

  1. Git不会覆盖现有目录的权限。
  2. 您应该检查user apache(或您使用的任何http服务器)正在运行。
  3. apache可能会www-data

    ps aux | grep http | cut -f 1 -d ' '
    
    1. 一旦您知道用户,https服务器正在运行,请更改所有者。
    2. 这个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)

这可能是你可以使用的东西 - 我自己没有尝试过,所以我不知道它是否真的有效:

https://stackoverflow.com/a/3208143/609855