Directorio de artículos
前两天,我的WordPress网站在升级程序的时候,突然宕机了。
打开后台一片空白,前端直接报500错误,日志里全是PHP fatal error。
当时我脑子里就一个念头,完了,核心文件坏了。
说实话,遇到这种事,大部分人的第一反应是慌。尤其是那种博客写了好几年、装了十几个插件、主题也深度定制过的站,你会想,这要是重装一遍,我那些东西还在不在?
我跟你说,别慌。只要你还能SSH登上去,这事儿五分钟就能解决。
WordPress核心文件损坏的原因
先说一下背景,WordPress的升级机制其实挺脆弱的,它在线升级的时候会把核心文件逐个替换,这个过程中如果权限不对、磁盘满了、或者进程被中断,文件就会错乱。错乱的结果就是,你的站点直接挂掉,前端后端都进不去。
但这里有个非常关键的认知,WordPress的核心文件和你的内容是完全分离的。你的主题、插件、上传的图片,全都在wp-content目录下,配置信息在wp-config.php里。而核心文件,就是wp-admin、wp-includes这些文件夹,它们本质上就是一套PHP程序而已。
所以,用SSH替换核心文件这件事,其实就是在做一件事,把坏掉的程序重新放一份新的进去。就像你家电脑蓝屏了,你重装个系统,D盘的东西还在不在?一样的道理。

SSH替换WordPress核心文件完整步骤
故事是这样的,我当时SSH登上去,进了站点目录,第一件事就是确认一下当前的状态。
cd /var/www/html # 根据你的实际路径然后,下载最新版WordPress。
wget https://wordpress.org/latest.tar.gz
tar -xf latest.tar.gz这一步就是把最新版的WordPress压缩包拉下来,然后解压。你会看到当前目录下多了一个wordpress文件夹。
接下来是最关键的一步,覆盖核心文件。
cp -rf wordpress/* .这行命令的意思是,把wordpress文件夹里的所有东西,强制复制到当前目录。
这里你需要理解一件事,这个操作不会删除你的wp-content和wp-config.php。因为wordpress文件夹里本身就没有这两个东西,它们是你的站点独有的。所以这一步是安全的,它只会覆盖那些核心程序文件。
我当时执行完这行命令之后,心里还是有点忐忑的。万一覆盖错了呢?
然后我就去清理安装包。
rm -rf wordpress latest.tar.gz干净利落,不留痕迹。
做完这些之后,你需要登录后台,执行数据库升级。路径是/wp-admin/upgrade.php。因为新版本的WordPress可能会更新数据库结构,这一步不能省。
说实话,整个过程加起来不到五分钟。我当时就想,如果是在后台点升级按钮,鬼知道要等多久,还可能再挂一次。
操作前必做的备份工作
但我得提醒你,先备份。至少备份你的wp-config.php和数据库。这个习惯一定要养成,不管你觉得操作多安全。我自己是经历过数据丢失的人,那种痛,一次就够了。
SSH替换后目录权限修复方法
还有一件事,做完替换之后,你可能会遇到一个新问题,目录权限。
我替换完之后,去后台想装个插件,结果报错,因为我们不能复制一些文件,升级未被安装。
这是什么意思呢?就是你SSH上去替换文件的时候,文件的所有者可能变成了root或者其他用户,而你的Web服务器,比如Apache用的是www-data用户,它没有写入权限,所以WordPress的后台升级机制就报错了。
解决办法也不复杂。
cd /home/你的用户名/web/你的域名文件夹/public_html/wp-content/
chmod -R 755 plugins/
chmod -R 755 themes/
chmod -R 755 uploads/
chmod -R 755 upgrade/给这些目录设置755权限,意思就是只有拥有者有权写入,其他人只能读。
Si estas usandohestiacp这种面板,还有更简单的方式。
chown -R 你的用户名:你的用户名 /home/你的用户名/web/你的域名文件夹/public_html/*一句话搞定。
回到权限这块,如果你的站点文件权限整体都不对,可以用find命令批量修改。
find /home/你的用户名/web/你的域名文件夹/public_html -type d -print0 | xargs -0 chmod 755
find /home/你的用户名/web/你的域名文件夹/public_html -type f -print0 | xargs -0 chmod 644目录给755,文件给644,这是Linux环境下Web服务的标准权限配置。
用WP-CLI批量更新插件和主题
另外,如果你习惯用WP-CLI,还可以顺便批量更新一下插件和主题。
wp plugin update --all
wp theme update --all说实话,我自己也还在摸索更好的自动化方案,比如能不能写个脚本,一键完成备份、替换、改权限、升级数据库这一整套流程。理论上是可以的,但我还没完全跑通,就不在这里瞎说了。
回到最开始那个宕机的站,做完这些之后,刷新了一下页面,好了。前端正常加载,后台也能正常登录,主题和插件一个都没丢。
怎么说呢,这种感觉就是,你花五分钟用SSH操作,省掉了可能一整天的折腾。
我觉得很多站长可能都有类似的焦虑,就是一碰到WordPress升级出问题就慌,觉得是不是要重装一切。其实你只要理解了WordPress的文件结构,核心文件就是个程序包,替换一下就完了。真正属于你的东西,都在wp-content里。
最后再啰嗦一句,养成定期备份的习惯。不管你是用插件自动备份,还是SSH手动备份,都行。就是别等出事了才想起来备份这回事。
毕竟,数据没了就是没了,程序坏了可以换。
Ya que has leído hasta aquí, si te ha resultado útil, dale a "Me gusta" y compártelo. Si quieres ser el primero en recibir las novedades, ¡también puedes seguirme!
Gracias por leer mi artículo. ¡Hasta la próxima!
Esperanza Chen Weiliang Blog ( https://www.chenweiliang.com/ ) 分享的《用 SSH 彻底替换 WordPress 核心文件(比 FTP 快10倍)》,对您有帮助。
Bienvenido a compartir el enlace de este artículo:https://www.chenweiliang.com/cwl-34329.html
