【问题标题】:Wordpress can't write to fileWordpress 无法写入文件
【发布时间】:2015-02-18 21:38:15
【问题描述】:

我已将我的 wordpress 安装从托管 VPS 移至新的 centos 服务器。 现在我在直接从 wordpress 管理面板写入文件时遇到了问题。

文件夹/文件设置为 755/644。用户所有者是“wwwuser”,组是“apache”(我用这个通过ftp访问documentroot)。

我认为问题在于,在/etc/httpd/conf/http.conf 中,我将用户和组都设置为“apache”,事实上,如果我将权限更改为 775/664,一切正常,这应该意味着当设置组所有者时apache 一切正常,对吧?

所以我的问题是,我应该将所有权限更改为 775 还是有其他不会导致安全问题的解决方案?将所有文件夹和文件设为 775 和 664 是否安全?如果我把“apache”从/etc/httpd/conf/http.conf改成“wwwuser”怎么办?

编辑:问题是否可能是在 phpinfo 中,环境 pwd 设置为 /home/wwwuser/test 而不是 /home/wwwuser/

【问题讨论】:

    标签: wordpress apache permissions file-permissions chmod


    【解决方案1】:

    我建议不要更改运行 Apache 的用户(不要编辑 Apache 配置文件),而是将 apache 设置为文件的所有者。 chown -R apache /path/to/your/app/files

    我认为这是最简单的解决方案。如果您选择更改权限,则不必更改所有人(其他)的权限:您可以更改为 774,但我不明白为什么是 775。

    默认情况下,Apache 在 CentOS 上以 apache 用户运行。

    【讨论】:

    • 感谢您的回复。问题是我将来可以使用 FTP(例如上传插件),这可能会导致问题,因为 ftp 与 wwwuser 相关联。如果我从 wordpress ui 自动下载 e 插件,也会发生什么?我以前的VPS怎么可能没有这个问题,而且用户所有者不是apache?
    • @daimpa 如果您上传的插件文件不需要通过 php 编辑,那么它应该可以工作。如果他们这样做,那么您可能必须更改所有者。如果您从 Wordpress 下载插件,它将像 apache 一样在服务器上创建文件。有多种原因可以解释为什么它在您以前的 VPS 中工作:Web 服务器配置、文件权限...
    • Aussourd:再次感谢您的回复和耐心等待。在旧的服务器文件权限是相同的,755/644。您认为为业主创造相同的环境会非常困难吗?我的意思是,我经历过很多共享主机,但我从来没有遇到过这个问题。现在我在专用服务器上,并希望以正确的方式做事..
    • @daimpa 在共享主机上,他们可能将 Apache 设置为在对应于不同客户的不同用户下运行。这将解释它为什么起作用。我部署了许多 php 网站(包括几个 Wordpress 网站),并且我始终必须确保 Apache 具有权限并且我从来没有遇到过安全问题。 Wordpress 安全建议:copyblogger.com/wordpress-website-security 关于您的 VPS,请确保 SSH 访问受到限制(我建议停用 root 登录并仅接受 ssh 密钥身份验证)。您还可以查看 fail2ban 以保护您的服务器。
    • @daimpa apache 有文件权限吗?如果您不授予 Apache 对 Wordpress 需要编辑的文件/文件夹的权限,Wordpress 会要求您提供所有者凭据 limecanvas.com/…
    【解决方案2】:

    这是您现在面临的一个非常普遍的问题。有时,使用 FTP 创建/上传的文件/目录可能已分配了不同的用户/用户组。正如@Céline Aussourd 所说,如果您从 WordPress 安装插件,那么所有文件和目录都将获得默认用户/用户组。

    现在确定应该将哪个用户分配给您的文件的最简单方法是使用名为“test.php”的 CPanel 文件管理器创建一个测试文件,如果它正在工作,则从 Web 访问它,然后检查其用户/用户组并更改所有您的设置文件与该用户/用户组一起

    chown -R {user} /path/to/your/worpress/root
    

    将 {user} 替换为 apache 网络用户。

    更新:(安装没有 FTP 详细信息的插件)

    请在 define('WP_DEBUG', false); 行之后添加以下行到您的 wp-config.php。

    define('FS_METHOD', direct);
    

    删除插件并重新安装,这次它不会询问您的FTP详细信息,而是直接写入文件。

    【讨论】:

    • 它在尝试从 wordpress UI 安装新插件时询问我 FTP 用户/密码,因此它使用用户 wwwuser 和组 apache 创建了所有文件/文件夹,权限为 755,这是错误的,它应该是用户 apache 或权限 775...
    • 你能删除插件重新安装吗?如果是,请按照我上面的更新答案。
    • 它通过将 apache 设置为用户/组所有者来工作,就像 celine 所说的那样。我以前做过,但我不知道为什么它没有保存。
    • 太棒了!如果您想在没有 FTP 的情况下安装插件,请继续保留我的最新更新;)
    猜你喜欢
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    相关资源
    最近更新 更多