Server 让PHP和普通用户编辑相同文件的三种方法

Server 让PHP和普通用户编辑相同文件的三种方法,server,file-permissions,rsync,Server,File Permissions,Rsync,我是一名网络开发人员,对于一些即将到来的项目,我想使用基于文件的CMS。这意味着我在一开始创建的许多文件以后必须由PHP用户编辑,但对我的用户来说仍然是可编辑的(反之亦然)。我的电脑运行的是Debian 9,我很喜欢它,但对它不是很了解。我刚刚用Debian 9建立了一个本地网络服务器,用于备份和可能的文件共享。(我正在使用它进行配置,这反映了我的命令行技能水平) 在我的在线共享托管服务器上,PHP用户和FTP用户似乎是相同的,644/755权限工作正常,这也是我使用的CMS推荐的。我想在我的计

我是一名网络开发人员,对于一些即将到来的项目,我想使用基于文件的CMS。这意味着我在一开始创建的许多文件以后必须由PHP用户编辑,但对我的用户来说仍然是可编辑的(反之亦然)。我的电脑运行的是Debian 9,我很喜欢它,但对它不是很了解。我刚刚用Debian 9建立了一个本地网络服务器,用于备份和可能的文件共享。(我正在使用它进行配置,这反映了我的命令行技能水平)

在我的在线共享托管服务器上,PHP用户和FTP用户似乎是相同的,644/755权限工作正常,这也是我使用的CMS推荐的。我想在我的计算机上模拟这个,这样我就不必一直摆弄权限。但是我该怎么做呢?目前,我的普通用户(
anna
)无权访问
www-data
的文件,反之亦然。将它们放在同一组中仍然意味着更改文件权限。让
anna
成为PHP用户是个坏主意(据我所知),因为
anna
拥有
sudo
权限

到目前为止,我已经研究了三种可能的解决方案,但我真的不太了解,我想知道哪一种是最好的选择

  • 在我的计算机上进行本地开发,并使用apachempm-itk或suPHP让PHP编辑文件(我从中得到了这个想法)
  • 在我的计算机上本地开发并
    rsync
    使用
    grunt rsync
    将文件发送到我的服务器,然后以某种方式获取
    rsync
    以将所有权设置为
    www data
    ()
  • 使用在我的计算机上装载项目的服务器目录,该目录由
    www data
    所有,然后直接编辑服务器上的文件或使用
    grunt copy
    从我的本地目录复制它们
  • 您认为:从安全性和易用性的角度来看,哪种方法是最好的?或者你知道更好的吗

    感谢您花时间阅读并思考这一点

    安娜~

    我想出来了!最后,我读到了关于将PHP作为CGI而不是Apache模块运行的内容,这将解决我的权限问题。另外,据我所知,当我是唯一在本地计算机上使用它的人时,没有额外的安全预防措施

    如果有人发现这一点可能会有所帮助,以下是我所做的(基本上如下所示):

  • 我安装了
    php7.0-fpm
  • 编辑了/etc/apache2/sites enabled/000 default.conf,并将以下内容放在
    前面:

  • 然后,我使用以下命令重新启动了PHP-FPM:/etc/init.d/php7.0-FPM restart(与说明稍有不同,我使用的是Debian 9)。之后,phpinfo()给了我服务器API“FPM/FastCGI”
  • 最后,我在三个地方将用户和组从
    www-data
    更改为
    anna
    ,在/etc/php/7.0/fpm/pool.d/www.conf中更改了两次,然后在/usr/lib/tmpfiles.d/php7.0-fpm.conf中再次更改(最后一位可能是特定于Ubuntu/Debian的,我感谢Keith)
  • 就这样!:-)

    DirectoryIndex index.php
    <LocationMatch "^(.*\.php)$">
        ProxyPass fcgi://127.0.0.1:9000/var/www/html
    </LocationMatch>
    
    ; listen = /run/php/php7.0-fpm.sock
    listen = 127.0.0.1:9000