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

这里有几个类似的问题,例如这个,但该问题的答案(以及我读过的其他几个)是:</ p>


让PHP首先创建目录。</ p>
</ blockquote>

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

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

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

我不知道 对Linux权限有一个很好的理解,但是从我读过的将目录和文件权限改为 777 </ code>一般不是一个好主意。 此外,如果我 chmod </ code>文件夹到 777 </ code>,我怀疑当我运行 git pull origin master </ code>时,权限将被覆盖,虽然我没有' 测试了这个。</ p>
</ div>

展开原文

原文

There are several similar questions on here, such as this one, but the answer to that question (and several others I read) is:

let PHP create the directory itself in the first place.

I use git on my site, so it's not possible to allow PHP to "create the directory itself."

To pull in changes, I run a git pull origin master command when logged into my server via SSH, which makes the owner of the files my cpanel user I'm logged in as.

I need PHP to be able to create files in certain directories. Is the only way to allow this to chmod the folders to 777, or is there a better way?

I don't have a good understanding of Linux permissions, but from what I've read changing directory and file permissions to 777 is generally not a good idea. Furthermore, if I chmod the folders to 777, I suspect the permissions will be overwritten when I run git pull origin master, although I haven't tested this.

dongzhanlu8890
dongzhanlu8890 更好的是,将日志放在文档根目录外的新目录中,从文档根目录中对其进行符号链接,然后确保您的Web服务器配置为永远不会从该目录执行PHP。
5 年多之前 回复
dqrnsg6439
dqrnsg6439 toolong
5 年多之前 回复
duanguochong0397
duanguochong0397 好吧,在这种情况下,我想要一个我写的站点地图生成器脚本,将站点地图文件写入public_html目录。我也希望能够在那里编写某些日志文件,以便我可以在浏览器中查看它们。
5 年多之前 回复
doucuan5365
doucuan5365 toolong
5 年多之前 回复
doucheng2053
doucheng2053 如上所述,我正在使用git。它创建目录和文件。
5 年多之前 回复
dongqiao3833
dongqiao3833 使用shell_exec创建文件和目录
5 年多之前 回复

2个回答




  1. Git不会覆盖现有目录的权限。</ li>
  2. 你应该检查 在什么 user </ code> apache(或你使用的任何http服务器)正在运行。</ li>
    </ ol>

    可能是 www-data < / code> for apache:</ p>

      ps aux |  grep http |  cut -f 1 -d''
    </ code> </ pre>


    1. 一旦你知道用户,https服务器正在运行, 更改所有者。</ li>
      </ ol>

      此shell命令没问题:</ p>

        chown -R www-data FOLDER_PHP_NEEDS_TO_WRITE_TO 
      </ code> </ pre>

      上面会将文件夹的所有者设置为 www-data </ code>,显然为https服务器提供了写入权限。</ p>

      您是否害怕失去对此目录的控制权,请通过 group </ code>权限执行此操作:</ p>

        chgrp -R  www-data FOLDER_PHP_NEEDS_TO_WRITE_TO 
      chmod -R g + w FOLDER_PHP_NEEDS_TO_WRITE_TO
      </ code> </ pre>

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

      另一种选择是运行< code> git </ code> as www-data </ code>:</ p>

        sudo runuser -l www-data -c'git pull'
      </ 代码> </ pre>

      但我会建议使用group的解决方案。</ p>
      </ div>

展开原文

原文

  1. Git won’t override permissions on already existing directories.
  2. You should check under what user apache (or whatever http server you use) is running.

It would be likely www-data for apache:

ps aux | grep http | cut -f 1 -d ' '
  1. As soon as you know the user, https server is running as, do change the owner.

This shell command is fine:

chown -R www-data FOLDER_PHP_NEEDS_TO_WRITE_TO

The above will set the owner of the folder to www-data, apparently giving a write permission for https server to write there.

Whether you are afraid of loosing control over this directory, do it via group permission:

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

Now you are still the owner, while http server is able to write there because it belongs to this group. You might do it other way, adding yourself to www-data group and giving write permissions for that group to the desired folder.

Another option is to run git as www-data:

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

But I would suggest the solution with group.

duanji9311
duanji9311 是的,我理解意图 - 但是如果这个文件夹已经包含(例如)来自git repo的PHP代码,那么你只是让网站能够覆盖自己的源代码。 这就是为什么一般来说,您永远不希望文档根目录下的任何内容都可以被Web服务器进程写入。
5 年多之前 回复
dongpiansui8755
dongpiansui8755 我打赌文件夹正在成为Web服务器 - 可写入Web服务器写入这些文件夹:)
5 年多之前 回复
dsb53973
dsb53973 注意:如果FOLDER_PHP_NEEDS_TO_WRITE_TO不为空,这是一个坏主意,因为您的Web服务器进程现在可以修改其内容。
5 年多之前 回复
ds19891231
ds19891231 这取决于。 我会更新答案。
5 年多之前 回复
dongshijiao6890
dongshijiao6890 如果我将文件夹chown给另一个用户,是否会影响git更新文件夹中文件的能力,以及我通过ftp编辑的能力?
5 年多之前 回复



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

https://stackoverflow.com/a/3208143/609855 </ p>

</ div>

展开原文

原文

This might be something you can use - I haven't tried it myself so I don't know if it actually works:

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问