为了理解你为什么会遇到这些问题,你需要理解所有权的基本概念。
基本上,您知道apache是作为www数据用户运行的。这就是为什么将所有内容都设置为该用户所有的原因,因为WordPress正在验证它是否可以作为拥有自己文件的用户创建文件。因此,您要做的是将所有内容都归拥有这些文件的用户所有。
如果您完全控制机器,这很好。另一方面,如果它是共享托管服务器,那么您就创建了一个安全漏洞。
通常,web服务器以某个用户(如www数据)的身份运行,然后由其他用户(如“otto”,即我的用户帐户)运行代码。在这种情况下,Web服务器将无法以“otto”的形式创建文件,因此无法以我的帐户的形式正确创建文件。因此,WordPress关于创建正确拥有的文件并因此能够安装插件或更新文件的检查将失败,因为共享的Web服务器用户拥有我的文件将存在安全风险。
在这种情况下,WordPress应该正确地提示我输入FTP凭据或类似的内容。这将是一种解决用户帐户问题的方法,通过身份验证为应该写入文件的用户,然后以该用户的身份写入文件。
现在,您正试图通过将所有WordPress文件更改为与Web服务器写入文件的帐户相同的帐户来解决此问题。更常见的方法是更改Web服务器写入文件的方式,允许PHP进程由运行文件的用户帐户“拥有”。
对此的一般回答是“SUPPP”。此版本的PHP将PHP进程运行的用户设置为与其运行的PHP文件的所有者相同的用户。这在共享托管设置上更安全,因为它确保共享Web服务器运行的PHP进程作为PHP文件的所有者运行,因此无法读取其他用户帐户等。
在Ubuntu上,我相信这是实现这一目标的一般方法:
安装SUPPP:
$ sudo apt-get install libapache2-mod-suphp
禁用旧的mod\\u php
$ sudo a2dismod php5
重新启动Apache
$ sudo /etc/init.d/apache2 restart
瞧。现在,让WordPress PHP文件归其所有者所有。没有特殊技巧,没有更改权限或所有权或类似的内容。由于PHP进程将作为这些文件的所有者运行,因此它将能够作为所有者对其进行写入。目录应为755,文件应为644(注意,SUPPP不喜欢文件按组可写,因此755/644是正确的权限集)。