当把WordPress网站从宝塔面板以及AAPanel迁移到 HestiaCP或其他等面板的 VPS 后,在WordPress后台更新插件、主题时,有时候遇到更新失败:无法创建目录或由于某些文件无法被复制,更新无法进行的错误。
这是一个典型的权限问题,本文记录下排查过程,对于从宝塔迁移到任何非root用户运行网站的面板都具有同样的借鉴意义。
目录和文件的读写权限
遇到权限问题,第一反应通常是重置目录和文件的读写权限。不过有时候没啥用,还是问题照旧。
# 适用于WordPress的标准权限 find . -type d -exec chmod 755 {} \; find . -type f -exec chmod 644 {} \;
迁移导致的所有权冲突
在排除了常规权限后,最终将问题锁定在了文件所有权上。
宝塔面板通常使用一个名为 www 的通用系统用户来运行所有网站。而HestiaCP 等大多数面板则会为每个账户创建一个独立的、同名的系统用户。当以root用户身份将宝塔的文件迁移过来后,这些文件的所有者就变成了root。因此,无论怎么修改读写权限(chmod),新面板环境下的Web服务器依然没有权力去修改属于root用户的文件。这才是问题的根源
一键重置所有权与权限
要彻底解决问题,需要将所有权和权限全部恢复到新面板的标准状态。
以root用户身份,依次执行以下命令(请将[user]和[domain.com]替换为新面板的实际用户名和网站域名)
1. 解锁所有文件:
chattr -R -i /home/[user]/web/[domain.com]/public_html
2. 更改文件所有权
chown -R [user]:[user] /home/[user]/web/[domain.com]/public_html
3. 重置标准读写权限
find /home/[user]/web/[domain.com]/public_html -type d -exec chmod 755 {} \; find /home/[user]/web/[domain.com]/public_html -type f -exec chmod 644 {} \;
执行完以上所有命令后,再次尝试更新WordPress,问题即可完美解决。
未经允许不得转载:主机格调 » 从宝塔迁移到 HestiaCP 面板后,WordPress 程序、主题和插件更新失败怎么办?其他面板也可参考