WordPress常见错误速查

首页 » WordPress常见错误速查

🛠️ WordPress常见错误速查

输入错误提示关键词或错误码,快速定位原因与解决方案

DB

建立数据库连接时出错

数据库
Error establishing a database connection

WordPress 无法连接数据库,整站打不开,只显示这一行字。

查看解决方案 →
DB

数据库账号被拒绝访问

数据库
Access denied for user ‘xxx’@’localhost’ (using password: YES)

账号密码不匹配,或该用户没有访问这个数据库的权限。

查看解决方案 →
DB

MySQL server has gone away

数据库
MySQL server has gone away

数据库连接在操作过程中被中断,常见于备份、导入、发布大量内容时。

查看解决方案 →
DB

数据表损坏 / 崩溃

数据库
Table ‘./db/wp_posts’ is marked as crashed and should be repaired

数据表文件损坏,通常出现在服务器异常关机、断电之后。

查看解决方案 →
PHP

内存耗尽(Allowed memory size exhausted)

PHP 错误
Fatal error: Allowed memory size of 268435456 bytes exhausted

PHP 可用内存被用完,常见于后台操作、导入数据或插件本身消耗过大。

查看解决方案 →
PHP

执行超时(Maximum execution time exceeded)

PHP 错误
Fatal error: Maximum execution time of 30 seconds exceeded

脚本运行时间超过 PHP 限制被强制中断,多发生在发布内容、上传大图、导入数据时。

查看解决方案 →
PHP

函数重复声明(Cannot redeclare)

PHP 错误
Fatal error: Cannot redeclare function xxx()

同一个函数被定义两次,通常发生在子主题与父主题、或插件之间。

查看解决方案 →
PHP

语法错误(Parse error)

PHP 错误
Parse error: syntax error, unexpected ‘}’ in /wp-content/themes/xxx/functions.php on line 120

PHP 文件存在语法错误,整个文件无法解析。

查看解决方案 →
PHP

调用未定义函数(Call to undefined function)

PHP 错误
Fatal error: Call to undefined function get_template_part()

调用了不存在的函数,通常是代码放错位置或依赖插件未启用。

查看解决方案 →
PHP

PHP 版本兼容性警告(Deprecated)

PHP 错误
Deprecated: strip_tags(): Passing null to parameter #1 … is deprecated

代码使用了新版 PHP 已弃用的写法,站点可能仍正常但日志会被刷满。

查看解决方案 →
PHP

headers already sent 警告

PHP 错误
Warning: Cannot modify header information – headers already sent by (output started at …)

页面已有输出后又想发送 HTTP 头,导致重定向、登录 Cookie 写入失败。

查看解决方案 →
500

白屏死机(WSOD)

白屏与报错
页面完全空白,无任何错误提示,后台前台都打不开

最典型的一类故障,多半是插件或主题触发了 PHP 致命错误且错误被隐藏。

查看解决方案 →
500

HTTP 500 内部服务器错误

白屏与报错
500 Internal Server Error

服务器处理请求时出错,WordPress 侧多为代码错误或 .htaccess/nginx 规则异常。

查看解决方案 →
500

HTTP 502 / 504 网关错误

白屏与报错
502 Bad Gateway / 504 Gateway Timeout

反向代理(Nginx)无法从 PHP 拿到响应,通常是 PHP 进程挂了或处理超时。

查看解决方案 →
500

无限重定向(Too many redirects)

白屏与报错
ERR_TOO_MANY_REDIRECTS,页面在循环跳转

站点地址配置或 HTTPS 规则冲突导致反复跳转。

查看解决方案 →
500

HTTP 403 Forbidden 访问被拒绝

白屏与报错
403 Forbidden / 您的请求被拦截(WAF 拦截页)

请求被服务器或安全防护拦下,常见于后台操作、接口请求、爬虫访问。

查看解决方案 →
500

404 错误与固定链接失效

白屏与报错
文章、分类页全部 404 Not Found

除首页外所有页面都打不开,通常是伪静态规则未生效或丢失。

查看解决方案 →
IMG

上传文件超出大小限制

上传与资源
The uploaded file exceeds the upload_max_filesize directive in php.ini

上传的图片或文件超过服务器允许的大小上限。

查看解决方案 →
IMG

上传图片出现 HTTP 错误

上传与资源
上传时提示「HTTP 错误」,图片无法插入

上传请求被中断,多见于图片处理、权限或内存问题。

查看解决方案 →
IMG

无法创建目录(uploads 权限)

上传与资源
Unable to create directory wp-content/uploads/2026/09. Is its parent directory writable by the server?

WordPress 没有权限在 uploads 下新建按日期分的目录。

查看解决方案 →
IMG

混合内容 Mixed Content(HTTPS 站点加载 HTTP 资源)

上传与资源
浏览器提示「不安全的内容」或 Mixed Content,样式/图片异常

页面是 HTTPS,但内部仍引用了 HTTP 资源,浏览器直接拦截加载。

查看解决方案 →
IMG

图片不显示 / 缩略图错乱

上传与资源
图片显示裂图,或缩略图与内容不匹配

图片文件被移动、重命名,或缩略图索引与实际文件不一致。

查看解决方案 →
IMG

OSS/CDN 缓存导致内容不更新

上传与资源
修改了文章或样式,但前台看到的还是旧内容

边缘缓存或对象存储缓存未刷新,请求没有回源。

查看解决方案 →
KEY

忘记密码 / 无法登录后台

登录与后台
输入的密码不正确,且无法通过邮件重置

忘记密码且站点发不出邮件时,需要手动重置。

查看解决方案 →
KEY

登录后立即跳回登录页

登录与后台
输入账号密码后仍停留在 wp-login.php

登录 Cookie 无法写入或被判定失效。

查看解决方案 →
KEY

无法安装插件:无法创建目录

登录与后台
安装失败:无法创建目录 / Could not create directory

WordPress 没有权限在 plugins 或 themes 目录写入文件。

查看解决方案 →
KEY

更新失败:另一更新正在进行

登录与后台
另一更新正在进行 / 更新失败:响应不是有效的 JSON

更新锁未被释放,或更新请求被拦截、超时。

查看解决方案 →
MAIL

WordPress 无法发送邮件

邮件
邮件未发出 / 自己收不到测试邮件 / 跑到垃圾箱

默认 PHP mail() 在多数主机上不可用或极易被判为垃圾邮件。

查看解决方案 →
MAIL

联系表单收不到邮件

邮件
用户提交了表单,但后台邮箱毫无记录

表单插件未配置 SMTP,或被垃圾拦截、被插件冲突影响。

查看解决方案 →
PLG

插件冲突(万能排查法)

插件与主题
开启某功能后站点异常、页面错乱、功能失效

两个及以上插件争夺同一钩子或资源,导致行为冲突。

查看解决方案 →
PLG

主题冲突 / 自定义代码更新后丢失

插件与主题
主题更新后自定义功能消失,或启用新主题后站点异常

直接修改主题文件,更新时会被覆盖;或主题与插件功能重复。

查看解决方案 →
PLG

启用插件后站点崩溃(恢复模式)

插件与主题
Your site is experiencing a technical issue(WordPress 恢复模式)

插件触发致命错误,WordPress 自动进入恢复模式并邮件通知。

查看解决方案 →
SPD

网站打开缓慢 / TTFB 过高

性能
页面首字节时间(TTFB)超过 1 秒,加载卡顿

服务器响应慢或资源过多,是体验与 SEO 的共同敌人。

查看解决方案 →
SPD

CPU / 内存占用过高

性能
主机频繁告警 CPU 超限,站点间歇性无法访问

某个请求持续消耗资源,或被大量爬虫抓取。

查看解决方案 →
SPD

缓存不生效

性能
开启了缓存插件,但检测不到缓存命中,速度没变化

缓存规则未生效或被其他层绕过/冲突。

查看解决方案 →
SEC

网站被挂马 / 莫名跳转

安全
从搜索引擎进入时跳转到赌博/色情站,或页面被插入陌生代码

站点文件或数据库被注入恶意代码,常见于弱口令、插件漏洞、服务器被入侵。

查看解决方案 →
SEC

后台登录被暴力破解

安全
日志中出现大量 POST /wp-login.php 请求,账号被锁或内存被占满

自动化脚本持续尝试登录,消耗服务器资源并存在被攻破风险。

查看解决方案 →
ETC

中文乱码

其他问题
文章内容显示为乱码或问号

字符集不一致,导入导出或数据库迁移时最常见。

查看解决方案 →
ETC

时间日期显示错误

其他问题
文章发布时间与本地时间相差 8 小时

时区设置或数据库时区与站点时区不一致。

查看解决方案 →
ETC

定时任务(wp-cron)不执行

其他问题
定时发布文章未按时发布,计划任务日志为空

WordPress 的伪 Cron 依赖访客访问触发,低流量站点很容易不执行。

查看解决方案 →
ETC

robots.txt 返回 404

其他问题
访问 /robots.txt 显示 404 或提示「搜索引擎无法访问」

WordPress 的虚拟 robots.txt 被服务器规则或物理文件干扰。

查看解决方案 →
ETC

RSS / Feed 报错

其他问题
feed 页面报 XML 解析错误或显示乱码

输出中混入了额外字符或错误提示,破坏了 XML 结构。

查看解决方案 →
500

WordPress 出现严重错误

白屏与报错
There has been a critical error on this website. Please check your site admin email inbox for instructions.

WordPress 5.2+ 的致命错误保护提示,比纯白屏友好,同时会给管理员邮箱发一封恢复模式邮件。

查看解决方案 →
500

站点遇到技术问题(恢复模式)

白屏与报错
Your site is experiencing a technical issue. An email has been sent to the site administrator.

WordPress 自动把出错插件隔离到「恢复模式」,站点对访客仍在运行。

查看解决方案 →
UPD

无法与站点通信(环回请求失败)

更新与维护
站点健康:无法与站点通信 / 环回请求(Loopback request)失败

WordPress 自己请求自己的接口失败,会连带影响自动更新、计划任务、REST 相关功能。

查看解决方案 →
UPD

REST API 无法访问或报错

更新与维护
站点健康:REST API 遇到了错误 / 未返回有效的 JSON 响应

REST 接口被拦截或返回了异常内容,直接影响区块编辑器、页面构建器与移动端应用。

查看解决方案 →
UPD

无法建立到 WordPress.org 的连接

更新与维护
无法建立到 WordPress.org 的连接 / 更新失败:cURL error 28 / 35 / 60

服务器访问官方源失败,导致无法更新、无法搜索安装插件主题。

查看解决方案 →
UPD

安装插件提示需要 FTP 信息

更新与维护
To perform the requested action, WordPress needs to access your web server. Please enter your FTP credentials.

WordPress 无法直接写文件,要求输入 FTP 凭据才能继续安装。

查看解决方案 →
UPD

更新失败:无法写入 wp-config.php

更新与维护
WordPress 更新过程中提示「无法写入 wp-config.php」,需手动添加密钥

小版本更新时需要写入安全密钥,但文件不可写。

查看解决方案 →
UPD

站点一直处于维护模式

更新与维护
Briefly unavailable for scheduled maintenance. Check back in a minute.

更新被中断,主目录残留 .maintenance 文件,站点一直显示维护页。

查看解决方案 →
UPD

更新下载失败:Too Many Requests

更新与维护
下载失败:Too Many Requests

WordPress.org 对同一 IP 的下载请求做了限流,常见于多站点服务器。

查看解决方案 →
UPD

站点健康提示缺少 PHP 模块

更新与维护
站点健康:缺少必需的模块 / The required module ‘gd’ is not installed

服务器缺少 WordPress 或插件运行必需的 PHP 扩展。

查看解决方案 →
DB

数据库连接数超出上限

数据库
Error establishing a database connection: Too many connections

同时连接数超过了 MySQL 的最大连接限制,数据库拒绝新连接。

查看解决方案 →
SPD

主机提示资源超限(Resource Limit Is Reached)

性能
Resource Limit Is Reached / 508 资源限制已达到

共享主机对 CPU、内存、并发连接有硬限制,超限后被临时限制访问。

查看解决方案 →
SPD

网站被主机暂停

性能
This Account has been suspended / 账户已被暂停

超资源、超流量、欠费或被投诉后,主机商直接暂停了整个账户。

查看解决方案 →
PHP

对 null 调用成员函数

PHP 错误
Fatal error: Uncaught Error: Call to a member function get_cart() on null

代码对一个空值调用了方法,通常是依赖的插件未启用或数据查询失败。

查看解决方案 →
PHP

类未找到(Class not found)

PHP 错误
Fatal error: Uncaught Error: Class “WooCommerce” not found

代码引用了不存在的类,多因插件未启用、文件加载顺序或命名空间错误。

查看解决方案 →
PHP

函数嵌套层级过深(递归溢出)

PHP 错误
Fatal error: Maximum function nesting level of ‘256’ reached, aborting!

代码出现无限递归或循环调用,通常是钩子互相触发。

查看解决方案 →
PHP

远程请求失败(file_get_contents / wp_remote)

PHP 错误
Warning: file_get_contents(https://…): failed to open stream: Connection timed out

服务器无法访问外部地址,影响采集、API 对接、更新等功能。

查看解决方案 →
PHP

未定义变量或索引警告

PHP 错误
Warning: Undefined array key “title” / Undefined variable $args

代码读取了不存在的变量或数组键,PHP 8 起由 Notice 升级为 Warning。

查看解决方案 →
PHP

动态属性弃用警告(PHP 8.2+)

PHP 错误
Deprecated: Creation of dynamic property is deprecated

PHP 8.2 起禁止给未声明的类属性动态赋值,插件需显式声明属性。

查看解决方案 →
PHP

open_basedir 目录限制

PHP 错误
Warning: require_once(): open_basedir restriction in effect. File is not within the allowed path(s)

PHP 被限制只能访问指定目录,被访问文件在允许范围之外。

查看解决方案 →
PHP

类型错误(foreach / 参数类型不匹配)

PHP 错误
Fatal error: Uncaught TypeError: foreach() argument must be of type array|object, null given

把 null 当数组遍历,或函数传入了不符合类型声明的参数。

查看解决方案 →
IMG

图像后期处理失败

上传与资源
The server cannot process the image. This can happen if the server is out of memory or lacks the required image processing libraries.

WordPress 无法生成缩略图,常见于大图上传或图片处理库缺失。

查看解决方案 →
IMG

上传的图片不是有效图片

上传与资源
抱歉,由于服务器无法处理该图片,此图片无法上传 / 此文件不是有效的图片

文件校验未通过,可能是格式、损坏或权限问题。

查看解决方案 →
IMG

The link you followed has expired

上传与资源
The link you followed has expired. Please try again.

安全令牌(Nonce)校验失败或请求超时,多见于主题/插件上传、导入数据。

查看解决方案 →
IMG

目标文件夹已存在

上传与资源
Destination folder already exists. / 安装失败:目标文件夹已存在

安装主题或插件时,同名目录已存在于服务器上。

查看解决方案 →
KEY

后台样式错乱 / 后台功能异常

登录与后台
wp-admin 页面排版全乱、按钮无反应、编辑器打不开

后台 CSS/JS 资源未加载或被拦截。

查看解决方案 →
KEY

无法保存文章 / 保存后内容丢失

登录与后台
更新失败。此响应不是合法的 JSON 响应。 / 保存后内容变成空白

编辑器的保存请求(REST)被拦截或返回了非 JSON 内容。

查看解决方案 →
KEY

您没有足够的权限访问此页面

登录与后台
Sorry, you are not allowed to access this page.

当前用户角色权限不足,或管理员角色被误改。

查看解决方案 →
KEY

后台左侧菜单缺失或空白

登录与后台
登录后台后左侧菜单不全,或整个菜单区域空白

菜单注册被拦截,或权限/JS 加载异常。

查看解决方案 →
IMG

上传主题或插件包过大

上传与资源
The package could not be installed. The uploaded file exceeds the upload_max_filesize directive.

上传的 zip 包超过服务器限制,尤其是商业主题与含素材的插件。

查看解决方案 →
ELM

Elementor 编辑器一直转圈打不开

页面构建器
Elementor 编辑页面时一直加载中(Loading),无法进入编辑界面

编辑器依赖的 REST/AJAX 请求被拦截或资源未加载。

查看解决方案 →
ELM

Elementor 提示内容区域未找到

页面构建器
Sorry, the content area was not found in your page. You must call the_content function in the current template.

主题模板没有输出 the_content(),Elementor 找不到渲染位置。

查看解决方案 →
ELM

Elementor 前台样式与编辑器不一致

页面构建器
编辑器里排版正常,前台访问时样式错乱或缺少样式

Elementor 生成的 CSS 文件未刷新或缓存未清理。

查看解决方案 →
ELM

Elementor 编辑器白屏或报错

页面构建器
进入 Elementor 编辑器后页面空白,或提示发生错误

编辑器加载时触发 PHP 致命错误或 JS 异常。

查看解决方案 →
ELM

Elementor 模板库 / 图标库加载失败

页面构建器
无法连接到服务器 / 模板库一直加载不出来

编辑器需要从 Elementor 云端拉取模板与图标,网络不通时即失败。

查看解决方案 →
ELM

Elementor 页面保存后内容丢失或无法更新

页面构建器
点更新后提示保存失败,或历史版本被回滚

保存请求被拦截或超时,也可能是非管理员/多作者同时编辑。

查看解决方案 →
ETC

评论提交后不显示

其他问题
访客提交评论成功,但评论列表中看不到

评论进入了待审核队列或被反垃圾机制拦截。

查看解决方案 →
ETC

分页第二页起 404

其他问题
首页正常,但 /page/2/ 或分类页第二页返回 404

分页重写规则或伪静态配置不匹配。

查看解决方案 →
SEC

Cloudflare / WAF 报 Error 1020

安全
Error 1020 Access Denied / 您的访问被拒绝

边缘防火墙规则(WAF 自定义规则)拦截了该请求。

查看解决方案 →
ETC

网站迁移后后台进不去

其他问题
迁移服务器后前台正常,访问后台自动跳到旧域名或空白

数据库中的站点地址仍是旧域名,未做替换。

查看解决方案 →
DB

数据库表前缀不匹配

数据库
安装/恢复后提示表不存在,或站点提示尚未安装(Error establishing a database connection)

wp-config.php 中的表前缀与实际数据表前缀不一致。

查看解决方案 →
ETC

编辑器中提示「此区块包含无效内容」

其他问题
此区块包含无效内容,预览或编辑时出现异常

区块保存的数据结构与当前版本不匹配,多为插件停用或版本变化所致。

查看解决方案 →
PLG

WooCommerce 结账或购物车异常

插件与主题
加入购物车失败 / 结账页一直转圈 / 订单无法提交

WooCommerce 依赖 AJAX 与 Session,容易被缓存与安全插件破坏。

查看解决方案 →
IMG

图片上传后被压缩变模糊

上传与资源
上传的图片清晰度明显下降,细节丢失

图片压缩比例过大,或原始尺寸被过度缩放。

查看解决方案 →
SPD

后台卡顿(admin-ajax.php 请求过多)

性能
后台操作缓慢,浏览器 Network 中大量 admin-ajax.php 请求

插件在后台轮询或频繁请求,拖慢后台响应。

查看解决方案 →
📄 全部 87 个 WordPress 常见错误 · 完整文字版清单(点击展开 / 收起)

下面是本站收录的 87 个 WordPress 常见错误及其完整说明,包含错误提示原文、可能原因、解决步骤与可直接复制的代码。你可以用 Ctrl+F 在本页直接搜索错误关键词,也可以使用上方工具按分类筛选。内容涵盖:数据库、PHP 错误、白屏与报错、上传与资源、登录与后台、邮件、插件与主题、性能、安全、其他问题、更新与维护、页面构建器。

数据库(6 条)

建立数据库连接时出错

Error establishing a database connection

WordPress 无法连接数据库,整站打不开,只显示这一行字。

可能原因
  • wp-config.php 中的数据库名、用户名、密码、主机填错
  • 数据库服务(MySQL/MariaDB)已停止运行或崩溃
  • 数据库服务器负载过高、连接数已满
  • 服务器磁盘写满导致数据库无法写入
解决方法
  1. 先确认数据库服务是否运行:宝塔面板 → 数据库 → 查看 MySQL 状态,或 SSH 执行 systemctl status mysqld
  2. 打开网站根目录 wp-config.php,核对 DB_NAME / DB_USER / DB_PASSWORD / DB_HOST 四项是否与主机商给的一致(宝塔建站的 DB_HOST 一般是 localhost)
  3. 检查密码是否含特殊字符(如 $ # “)导致解析错误,必要时用单引号包裹
  4. 登录宝塔查看磁盘与内存占用,清理日志文件释放空间
  5. 若以上都对仍报错,去数据库管理里执行一次「修复表」,或联系主机商确认数据库是否被暂停

提示:排查期间建议先备份 wp-config.php。修改文件后立即刷新站点验证,不要一次改多项,避免混淆原因。

数据库账号被拒绝访问

Access denied for user ‘xxx’@’localhost’ (using password: YES)

账号密码不匹配,或该用户没有访问这个数据库的权限。

可能原因
  • wp-config.php 里的密码与数据库实际密码不一致
  • 数据库用户没有被授权访问该数据库
  • 迁移网站后数据库用户名/密码沿用了旧服务器的
  • 密码中含有特殊字符被 PHP 转义处理出错
解决方法
  1. 在宝塔/主机面板中重置该数据库用户的密码
  2. 把新密码原样填入 wp-config.php 的 DB_PASSWORD(用单引号包裹)
  3. 确认该用户已绑定到对应的数据库(宝塔 → 数据库 → 权限设置)
  4. 清理浏览器与站点缓存后重新访问

提示:主机面板中改密码后,务必同步修改 wp-config.php,两处不一致是最常见原因。

MySQL server has gone away

MySQL server has gone away

数据库连接在操作过程中被中断,常见于备份、导入、发布大量内容时。

可能原因
  • 单次 SQL 数据包过大,超过 max_allowed_packet 限制
  • 执行时间过长,超过 wait_timeout 被服务端断开
  • 服务器内存不足触发 MySQL 重启
  • 导入大 SQL 文件时用了不合适的工具
解决方法
  1. 修改 MySQL 配置:在 my.cnf 的 [mysqld] 段加 max_allowed_packet=64M、wait_timeout=28800,保存后重启 MySQL
  2. 导入大数据库改用命令行:mysql -u用户 -p 数据库名 < backup.sql
  3. 备份插件改用分批导出,避免一次性拉取整库
  4. 检查服务器内存,必要时升级配置或增加 Swap
代码 / 命令
# MySQL 配置示例(my.cnf)
[mysqld]
max_allowed_packet=64M
wait_timeout=28800
interactive_timeout=28800

数据表损坏 / 崩溃

Table ‘./db/wp_posts’ is marked as crashed and should be repaired

数据表文件损坏,通常出现在服务器异常关机、断电之后。

可能原因
  • 服务器断电或强制重启导致表文件写入中断
  • 磁盘坏道或存储空间写满
  • 数据库引擎(MyISAM 表)本身抗崩溃能力弱
解决方法
  1. 登录宝塔/phpMyAdmin → 选中该数据库 → 勾选提示损坏的表 → 执行「修复表」
  2. 或使用命令行:mysqlcheck -u用户 -p –auto-repair 数据库名
  3. 修复失败时用 REPAIR TABLE 表名;仍失败则从备份恢复该表
  4. 恢复后建议将表引擎统一转为 InnoDB(抗崩溃能力更强)
代码 / 命令
-- 修复单表
REPAIR TABLE wp_posts;

-- 命令行批量修复
mysqlcheck -uroot -p --auto-repair --all-databases

提示:修复前先导出该表数据做保险备份,修复操作本身也可能失败。

数据库连接数超出上限

Error establishing a database connection: Too many connections

同时连接数超过了 MySQL 的最大连接限制,数据库拒绝新连接。

可能原因
  • 站点访问量突增或遭遇 CC 攻击
  • 插件频繁建立数据库连接且未释放
  • max_connections 设置过低(默认 151)
  • 存在大量慢查询长期占用连接
解决方法
  1. 查看当前连接数与进程:SHOW PROCESSLIST; 找出异常的长连接
  2. 调大 max_connections(如 500)与 max_user_connections,重启 MySQL
  3. 排查异常插件(统计、日志类插件常见),必要时停用
  4. 开启慢查询日志定位耗时 SQL,优化或清理相关数据
  5. 给数据库加 Redis 对象缓存,减少连接压力
代码 / 命令
-- 查看与调整连接数
SHOW VARIABLES LIKE 'max_connections';
SHOW PROCESSLIST;

-- 临时调大(重启后失效,建议写进 my.cnf)
SET GLOBAL max_connections = 500;

提示:连接数打满往往是结果而非原因,找到是谁占着连接不释放才是关键。

数据库表前缀不匹配

安装/恢复后提示表不存在,或站点提示尚未安装(Error establishing a database connection)

wp-config.php 中的表前缀与实际数据表前缀不一致。

可能原因
  • 安装时自定义了表前缀,但 wp-config.php 仍写着 wp_
  • 从备份恢复的数据库前缀与配置文件不符
  • 迁移时只改了部分配置
  • 安全插件修改了表前缀但未同步配置
解决方法
  1. 登录数据库查看实际数据表前缀(常见为 wp_ 或随机字符串)
  2. 把 wp-config.php 中 $table_prefix 改为实际前缀
  3. 检查 wp_usermeta 表中 meta_key 里的前缀也需同步替换
  4. 用搜索替换工具统一处理前缀(谨慎操作,先备份)
  5. 确认无误后再访问站点
代码 / 命令
-- 查看实际表前缀
SHOW TABLES LIKE '%options';

// wp-config.php 中同步修改
$table_prefix = 'wp_';

PHP 错误(15 条)

内存耗尽(Allowed memory size exhausted)

Fatal error: Allowed memory size of 268435456 bytes exhausted

PHP 可用内存被用完,常见于后台操作、导入数据或插件本身消耗过大。

可能原因
  • WP_MEMORY_LIMIT 设置过低(默认 40M/64M 不够用)
  • 某个插件或主题存在内存泄漏或死循环
  • 一次性处理超大量数据(如批量导入文章、生成缩略图)
  • 缓存/统计插件在后台加载过多数据
解决方法
  1. 编辑 wp-config.php,在 /* That’s all, stop editing! */ 之前加入内存提升代码
  2. 宝塔面板 → 软件商店 → PHP 设置 → 配置修改,把 memory_limit 调到 512M
  3. 确认主机商允许的上限(部分虚拟主机硬限制 256M)
  4. 开启 WordPress 调试日志定位是哪个插件触发的报错
  5. 若只在某插件操作时出现,联系插件作者或更换替代插件
代码 / 命令
// wp-config.php 中添加
define( 'WP_MEMORY_LIMIT', '512M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );

提示:memory_limit 不是越大越好,调到 512M 仍报错说明存在死循环,需要用调试模式排查插件。

执行超时(Maximum execution time exceeded)

Fatal error: Maximum execution time of 30 seconds exceeded

脚本运行时间超过 PHP 限制被强制中断,多发生在发布内容、上传大图、导入数据时。

可能原因
  • max_execution_time 设置在 30 秒以下
  • 服务器性能较弱,单个请求耗时过长
  • 插件执行了耗时任务(爬取、批量生成、图片处理)
  • nginx/php-fpm 的 request_terminate_timeout 小于需求
解决方法
  1. wp-config.php 中延长脚本执行时间
  2. 宝塔 → PHP 设置 → 配置修改,把 max_execution_time 调到 300
  3. 同步检查 Nginx 的 fastcgi_read_timeout、PHP-FPM 的 request_terminate_timeout 设置
  4. 把长耗时任务改为分批执行或走 WP-Cron 异步处理
  5. 确认是否被 Cloudflare/WAF 的 100 秒超时截断
代码 / 命令
// wp-config.php 中添加
set_time_limit( 300 );

函数重复声明(Cannot redeclare)

Fatal error: Cannot redeclare function xxx()

同一个函数被定义两次,通常发生在子主题与父主题、或插件之间。

可能原因
  • 子主题的 functions.php 复制了父主题已有函数
  • 两个插件注册了同名函数/类
  • WPCode 代码片段中被粘贴了两次
  • 主题更新后新增了与插件同名的函数
解决方法
  1. 用报错信息中的函数名全局搜索主题与插件目录,找到重复定义的位置
  2. 删除子主题里多余的复制代码,或给函数加前缀重命名
  3. 把自定义代码统一包在 if ( ! function_exists( ‘xxx’ ) ) { } 判断中
  4. 若是插件冲突,保留其中一个并联系作者处理
代码 / 命令
if ( ! function_exists( 'my_custom_function' ) ) {
    function my_custom_function() {
        // 你的代码
    }
}

提示:所有自定义函数建议统一加自己的前缀(如 yrwp_),能从根源避免命名冲突。

语法错误(Parse error)

Parse error: syntax error, unexpected ‘}’ in /wp-content/themes/xxx/functions.php on line 120

PHP 文件存在语法错误,整个文件无法解析。

可能原因
  • 手动编辑 functions.php 时括号、引号不配对
  • 复制代码时漏了分号或闭合标签
  • PHP 版本低于代码要求的语法(如用了箭头函数、null 合并赋值)
  • 上传文件时内容被截断(FTP 传输不全)
解决方法
  1. 按报错提示的行号打开文件,检查该行及上一行的括号、分号、引号
  2. 用 Notepad++ / VS Code 查看括号配对,并把文件编码确认为 UTF-8(无 BOM)
  3. 确认服务器 PHP 版本满足代码要求(宝塔 → 网站 → PHP 版本)
  4. 无法进后台时,用 FTP 把该文件恢复为安装包里的原始版本
  5. 恢复站点可用后,再用子主题 / WPCode 方式逐步添加自定义代码

提示:改 functions.php 前务必先备份,出错时能一秒回滚。这也是推荐用 WPCode 代码片段的原因。

调用未定义函数(Call to undefined function)

Fatal error: Call to undefined function get_template_part()

调用了不存在的函数,通常是代码放错位置或依赖插件未启用。

可能原因
  • 在主题文件加载早期调用了尚未定义的函数
  • 插件已停用但代码仍在调用它的函数
  • PHP 扩展未安装(如未启用 gd、curl、mbstring 扩展)
  • 主题与 WordPress 版本不匹配,函数已被移除
解决方法
  1. 搜索报错函数名,确认它属于哪个主题/插件,检查对应插件是否已启用
  2. 若是 PHP 内置扩展缺失,宝塔 → PHP 设置 → 安装扩展(gd、curl、fileinfo、mbstring 等)
  3. 用 function_exists() 包裹调用,避免依赖缺失时整站崩溃
  4. 确认 WordPress 与主题版本互不冲突,必要时更新或降级
代码 / 命令
if ( function_exists( 'wc_get_product' ) ) {
    // 安全调用 WooCommerce 函数
}

提示:特别注意 WooCommerce 相关函数:插件停用后主题若直接调用,会直接白屏。

PHP 版本兼容性警告(Deprecated)

Deprecated: strip_tags(): Passing null to parameter #1 … is deprecated

代码使用了新版 PHP 已弃用的写法,站点可能仍正常但日志会被刷满。

可能原因
  • PHP 升级到 8.x 后,旧插件/主题未适配
  • 函数传入 null 但新版本要求字符串
  • 使用了已被移除的旧函数(如 create_function、each)
  • 主题代码中缺少类型判断
解决方法
  1. wp-config.php 中开启调试日志,收集所有 Deprecated 提示的出处
  2. 给变量加默认值转换,例如 strip_tags( (string) $value )
  3. 联系插件/主题作者索要 PHP 8.x 兼容版本,或替换为在维护的同类插件
  4. 不要直接把 display_errors 开着上线,只记日志不对外显示
代码 / 命令
// 关闭前台显示、仅写日志(wp-config.php)
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

// 代码层修复示例
$text = isset( $value ) ? (string) $value : '';
$clean = strip_tags( $text );

提示:PHP 8.x 下最常见的坑就是给函数传 null,加 (string)/(array) 强制转换能解决一大半。

headers already sent 警告

Warning: Cannot modify header information – headers already sent by (output started at …)

页面已有输出后又想发送 HTTP 头,导致重定向、登录 Cookie 写入失败。

可能原因
  • functions.php 或插件文件在 <?php 之前/之后有多余空行、空格
  • 文件编码带 BOM 头(不可见字符)
  • 某处提前 echo/print 输出了内容
  • 缓存或 CDN 提前输出了缓冲内容
解决方法
  1. 检查报错指向的文件,删除 <?php 之前与 ?> 之后的所有空格与空行,结尾的 ?> 干脆删掉
  2. 把文件编码另存为「UTF-8 无 BOM」
  3. 用编辑器搜索该文件中的 echo、print、var_dump 调试残留
  4. 若使用缓存/输出缓冲插件,暂时停用后复测

提示:WordPress 官方规范建议 PHP 文件结尾不再写 ?>,可以彻底避免尾随空白输出的问题。

对 null 调用成员函数

Fatal error: Uncaught Error: Call to a member function get_cart() on null

代码对一个空值调用了方法,通常是依赖的插件未启用或数据查询失败。

可能原因
  • 调用了未启用插件提供的对象(如 WooCommerce 的 WC() 未加载)
  • 数据库查询没有返回结果,变量为 null
  • 钩子执行时机过早,对象尚未初始化
  • 插件版本更新后方法被移除或改名
解决方法
  1. 按报错文件与行号定位,确认该对象由哪个插件/主题提供,检查是否已启用
  2. 在调用前增加空值判断,避免整站崩溃
  3. 调整钩子执行时机(如从 init 改为 wp_loaded)
  4. 确认插件版本是否与当前代码匹配,回滚或更新
代码 / 命令
// 安全调用示例
$cart = ( function_exists( 'WC' ) && WC()->cart ) ? WC()->cart : null;
if ( $cart ) {
    echo $cart->get_cart_contents_count();
}

类未找到(Class not found)

Fatal error: Uncaught Error: Class “WooCommerce” not found

代码引用了不存在的类,多因插件未启用、文件加载顺序或命名空间错误。

可能原因
  • 依赖的插件已被停用或卸载
  • 未正确引入类文件(缺少 require / 自动加载未生效)
  • 命名空间(namespace)使用错误
  • Composer 依赖未安装(dependencies 目录缺失)
解决方法
  1. 确认报错类属于哪个插件,检查该插件是否已启用
  2. 检查插件的 vendor / includes 目录是否完整,重新安装插件可修复缺失文件
  3. 自定义代码中加 class_exists() 判断,避免依赖缺失时白屏
  4. 确认命名空间与 use 语句正确
代码 / 命令
if ( class_exists( 'WooCommerce' ) ) {
    // 使用 WooCommerce 类
}

函数嵌套层级过深(递归溢出)

Fatal error: Maximum function nesting level of ‘256’ reached, aborting!

代码出现无限递归或循环调用,通常是钩子互相触发。

可能原因
  • 插件之间钩子互相调用形成死循环(A 更新触发 B,B 又触发 A)
  • 自定义代码在 save_post 等钩子中调用 wp_update_post 造成递归
  • xdebug 的嵌套限制设置过低
解决方法
  1. 开启调试日志,查看调用栈定位循环的钩子或函数
  2. 在钩子回调中加静态标记,防止重复进入
  3. 避免在 save_post 内直接调用 wp_update_post,改用 remove_action / add_action 临时解绑
  4. 临时提高 xdebug.max_nesting_level 仅用于定位,不作为修复手段
代码 / 命令
add_action( 'save_post', function ( $post_id ) {
    static $done = false;
    if ( $done ) { return; }
    $done = true;
    // 你的逻辑
} );

远程请求失败(file_get_contents / wp_remote)

Warning: file_get_contents(https://…): failed to open stream: Connection timed out

服务器无法访问外部地址,影响采集、API 对接、更新等功能。

可能原因
  • 服务器出站请求被限制,或目标地址被墙
  • 目标站拒绝该服务器的请求(UA 或 IP 被拦)
  • SSL 证书验证失败
  • DNS 解析异常
解决方法
  1. 用命令行测试连通性:curl -I 目标地址
  2. 优先使用 WordPress 的 wp_remote_get() 而非 file_get_contents(),便于错误处理
  3. 为请求加上合理的超时与 UA 头
  4. SSL 问题先修证书,不要长期用 sslverify => false 绕过
代码 / 命令
$res = wp_remote_get( 'https://api.example.com/data', array(
    'timeout' => 15,
    'user-agent' => 'Mozilla/5.0 ...',
) );
if ( ! is_wp_error( $res ) ) {
    $body = wp_remote_retrieve_body( $res );
}

未定义变量或索引警告

Warning: Undefined array key “title” / Undefined variable $args

代码读取了不存在的变量或数组键,PHP 8 起由 Notice 升级为 Warning。

可能原因
  • 表单参数缺失或数组结构变化
  • 代码未做键存在判断
  • 插件/主题遗留代码未适配 PHP 8
  • 模板中直接输出了未定义的变量
解决方法
  1. 打开调试日志,收集所有 Warning 出处,按出现频率排序逐个修复
  2. 读取数组前先判断 isset() 或使用空合并运算符
  3. 模板变量给出默认值,避免前台直接输出 null
  4. 若来自第三方插件,优先升级到兼容 PHP 8 的版本
代码 / 命令
$title = $args['title'] ?? '默认标题';
$name  = isset( $_GET['name'] ) ? sanitize_text_field( wp_unslash( $_GET['name'] ) ) : '';

动态属性弃用警告(PHP 8.2+)

Deprecated: Creation of dynamic property is deprecated

PHP 8.2 起禁止给未声明的类属性动态赋值,插件需显式声明属性。

可能原因
  • 插件/主题在类中动态添加了未声明的属性
  • PHP 已升级到 8.2 或更高版本
  • 代码使用了老式写法(如 $this->newProp = …)
解决方法
  1. 在类中显式声明属性(加 public $newProp; 或使用 #[AllowDynamicProperties])
  2. 优先升级插件到支持 PHP 8.2+ 的版本
  3. 暂时不想改代码时,把 PHP 版本降到 8.1 可消除该提示(不推荐长期方案)
  4. 开启调试日志确认是哪些插件在报,集中处理
代码 / 命令
class My_Class {
    public $newProp; // 显式声明,消除弃用警告
}

// 或临时兼容(PHP 8.2+)
#[\AllowDynamicProperties]
class My_Legacy_Class {}

open_basedir 目录限制

Warning: require_once(): open_basedir restriction in effect. File is not within the allowed path(s)

PHP 被限制只能访问指定目录,被访问文件在允许范围之外。

可能原因
  • 主机或面板设置了 open_basedir 限制
  • 站点被移动后路径变化,旧配置未同步
  • 需要访问服务器上其他目录的资源(如共享上传目录)
解决方法
  1. 宝塔 → 网站 → 设置 → PHP 配置,检查 open_basedir 是否被限制在站点目录
  2. 把被访问文件移入站点允许的目录(推荐)
  3. 必要时在 PHP 配置中追加允许路径(注意安全,不要放开到根目录)
  4. 确认网站根目录路径与配置一致(迁移后常见)
代码 / 命令
; 宝塔 PHP 配置中追加允许目录(示例)
open_basedir = /www/wwwroot/你的站点:/tmp

类型错误(foreach / 参数类型不匹配)

Fatal error: Uncaught TypeError: foreach() argument must be of type array|object, null given

把 null 当数组遍历,或函数传入了不符合类型声明的参数。

可能原因
  • 数据库查询或接口返回了空值
  • 函数返回类型与预期不一致(返回 false 而非数组)
  • 插件在 PHP 8 下类型校验更严格
  • 传入的可选参数未给默认值
解决方法
  1. 在 foreach 前判断是否为数组(is_array / is_iterable)
  2. 给函数参数设默认值,并对返回值做类型校验
  3. 开启调试日志定位具体文件与行号
  4. 升级相关插件到兼容 PHP 8.x 的版本
代码 / 命令
if ( is_array( $items ) ) {
    foreach ( $items as $item ) { /* ... */ }
}

白屏与报错(8 条)

白屏死机(WSOD)

页面完全空白,无任何错误提示,后台前台都打不开

最典型的一类故障,多半是插件或主题触发了 PHP 致命错误且错误被隐藏。

可能原因
  • 刚启用/更新了不兼容的插件或主题
  • PHP 内存耗尽或执行超时(错误被 display_errors 关闭)
  • functions.php 语法错误
  • PHP 版本升级后旧代码报致命错误
解决方法
  1. 开启调试:wp-config.php 中设置 WP_DEBUG 为 true,刷新页面看具体报错
  2. FTP/宝塔文件管理重命名插件目录:/wp-content/plugins → plugins_off,能进后台说明是插件问题,再逐个改名排查
  3. 若是主题问题:把 /wp-content/themes/当前主题 改名,WordPress 会自动切回默认主题
  4. 无法定位时查看服务器错误日志(宝塔 → 网站 → 日志 / /var/log/nginx/error.log)
  5. 定位后更新或替换故障插件/代码,再恢复其它目录名

提示:排查顺序记住一句话:先关插件,再换主题,最后看日志。

HTTP 500 内部服务器错误

500 Internal Server Error

服务器处理请求时出错,WordPress 侧多为代码错误或 .htaccess/nginx 规则异常。

可能原因
  • 插件或主题存在 PHP 致命错误
  • 文件权限错误(目录非 755、文件非 644)
  • .htaccess 规则冲突(Apache)或 nginx 伪静态规则错误
  • PHP-CGI/PHP-FPM 进程崩溃
解决方法
  1. 查看服务器错误日志确认具体原因(宝塔 → 网站 → 错误日志)
  2. 重命名 .htaccess 为 .htaccess.bak,回后台重新保存固定链接生成默认规则
  3. 检查站点目录权限:目录 755、文件 644,属主为网站运行用户
  4. 把 PHP 版本切换一次(如 8.0 ↔ 8.1)验证是否版本兼容问题
  5. 停用全部插件排除法定位
代码 / 命令
# 修复文件权限(SSH)
find /www/wwwroot/你的站点 -type d -exec chmod 755 {} \;
find /www/wwwroot/你的站点 -type f -exec chmod 644 {} \;

提示:若 500 出现在上传图片或保存文章时,优先怀疑 PHP 内存/超时与上传限制。

HTTP 502 / 504 网关错误

502 Bad Gateway / 504 Gateway Timeout

反向代理(Nginx)无法从 PHP 拿到响应,通常是 PHP 进程挂了或处理超时。

可能原因
  • PHP-FPM 进程崩溃或未启动
  • 服务器内存不足,进程被系统杀掉
  • 单个请求耗时过长(超过 Nginx 超时时间)
  • CDN/ESA 回源超时或源站被防火墙拦截
解决方法
  1. 宝塔 → 软件商店 → 重启 PHP-FPM 与 Nginx
  2. 查看内存占用,给服务器加 Swap 或升级配置
  3. 调整超时时间:Nginx fastcgi_read_timeout 300s、PHP max_execution_time 300
  4. 排查是否有插件在执行超长任务(备份、爬取、批量生成)
  5. 若使用 CDN/ESA 加速,检查回源是否正常、源站是否拦截了回源 IP
代码 / 命令
# Nginx 超时相关配置
fastcgi_connect_timeout 300s;
fastcgi_send_timeout 300s;
fastcgi_read_timeout 300s;

提示:502 偶发出现时,先看 PHP-FPM 日志与内存监控曲线,多为内存被挤爆。

无限重定向(Too many redirects)

ERR_TOO_MANY_REDIRECTS,页面在循环跳转

站点地址配置或 HTTPS 规则冲突导致反复跳转。

可能原因
  • WordPress 地址(URL) 与站点地址(URL) 不一致(https 与 http 混用)
  • SSL 由 CDN 终结,但源站又强制跳回 https,形成死循环
  • Cloudflare/ESA 的 SSL 模式设为 Flexible(弹性)却又强制 https
  • .htaccess 或 nginx 有多重跳转规则
解决方法
  1. 先清 Cookie 与缓存,用无痕窗口复测,避免旧 Cookie 干扰
  2. 在 wp-config.php 中强制统一域名与协议(见下方代码)
  3. 把 CDN 的 SSL 模式改为 Full / Full (Strict),避免源站与边缘互相跳转
  4. 检查 nginx 是否重复写了 return 301 到 https 的规则
  5. 必要时直接改数据库:wp_options 表的 siteurl 与 home 两项
代码 / 命令
// wp-config.php 中强制统一(示例)
define( 'WP_HOME', 'https://www.yoursite.com' );
define( 'WP_SITEURL', 'https://www.yoursite.com' );

-- 或直接改数据库(注意替换域名)
UPDATE wp_options SET option_value='https://www.yoursite.com' WHERE option_name IN ('siteurl','home');

提示:用了 CDN 后一定要让源站与边缘的协议一致,否则必然循环重定向。

HTTP 403 Forbidden 访问被拒绝

403 Forbidden / 您的请求被拦截(WAF 拦截页)

请求被服务器或安全防护拦下,常见于后台操作、接口请求、爬虫访问。

可能原因
  • WAF/防火墙(如阿里云 WAF、宝塔 Nginx 防火墙)误判了关键词或参数
  • 文件/目录权限过严,或属主错误
  • IP 被主机商或 CDN 拉黑(如短时间大量请求)
  • 安全插件(Wordfence 等)触发了拦截规则
解决方法
  1. 查看 WAF 的拦截日志,确认触发的规则,把被误判的 URL 或参数加白名单
  2. 检查站点目录权限与属主是否正确
  3. 确认自己的 IP 是否被临时封禁,等待解封或联系主机商
  4. 在安全插件中把后台 IP、常用接口加入白名单
  5. 若为 REST API 或 admin-ajax 被拦,给对应路径放行

提示:REST API 被 WAF 拦截会导致区块编辑器、AI 助手类插件功能异常,排查时优先检查这条。

404 错误与固定链接失效

文章、分类页全部 404 Not Found

除首页外所有页面都打不开,通常是伪静态规则未生效或丢失。

可能原因
  • 服务器未开启伪静态 / 伪静态规则被清空
  • 更换服务器或迁移后未重新保存固定链接
  • nginx 缺少 try_files 规则
  • 改了固定链接结构但旧链接未做 301
解决方法
  1. 后台 → 设置 → 固定链接,直接点「保存更改」(无需修改任何内容),让 WordPress 重写规则
  2. 宝塔 → 网站 → 设置 → 伪静态,选择「WordPress」规则并保存
  3. 检查 nginx 配置中是否有 try_files $uri $uri/ /index.php?$args;
  4. 更新 old 链接时配置 301 重定向,避免流量与权重损失
  5. 确认站点没有误开「禁止搜索引擎」以外的异常状态
代码 / 命令
# WordPress 伪静态核心规则(nginx)
location / {
    try_files $uri $uri/ /index.php?$args;
}

提示:迁移网站后出现全站 404,99% 是伪静态规则没带过去,照上面两步即可修复。

WordPress 出现严重错误

There has been a critical error on this website. Please check your site admin email inbox for instructions.

WordPress 5.2+ 的致命错误保护提示,比纯白屏友好,同时会给管理员邮箱发一封恢复模式邮件。

可能原因
  • 插件或主题存在 PHP 致命错误(最常见原因)
  • PHP 内存耗尽或执行超时
  • 新装的插件/主题与当前 PHP 或 WordPress 版本不兼容
  • 核心文件被修改、损坏或被安全软件误删
解决方法
  1. 先查管理员邮箱收到的「恢复模式」邮件,点邮件里的链接可直接进入安全模式后台并停用出错插件
  2. 收不到邮件时开启调试日志:WP_DEBUG 与 WP_DEBUG_LOG 设为 true,重现问题后查看 wp-content/debug.log
  3. 用 FTP/宝塔文件管理把 /wp-content/plugins 改名为 plugins_off 快速验证(能进后台即为插件问题),再逐个改回定位
  4. 怀疑主题时把当前主题目录改名,WordPress 会自动切回默认主题
  5. 定位后更新或替换故障插件;同时切换 PHP 版本(如 8.1 ↔ 8.2)验证兼容性
  6. 修复完成后删除或改名 plugins_off 目录,恢复原状态
代码 / 命令
// wp-config.php 开启调试
 define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

提示:这条提示背后一定对应一条 PHP 错误记录,别只想着让它消失——先找到 debug.log 里的那行报错。

站点遇到技术问题(恢复模式)

Your site is experiencing a technical issue. An email has been sent to the site administrator.

WordPress 自动把出错插件隔离到「恢复模式」,站点对访客仍在运行。

可能原因
  • 某插件在激活或升级时抛出了致命错误
  • 插件依赖的 PHP 扩展缺失
  • 插件与新版本 WordPress 不兼容
  • 插件代码存在类型错误(PHP 8.x 更严格)
解决方法
  1. 点邮件里的恢复模式链接进入后台(链接有时效,一般 1-3 天内有效)
  2. 在后台插件列表中找到被隔离的插件,直接停用并删除或回滚版本
  3. 查看站点健康中的错误信息,确认具体报错文件与行号
  4. 等待插件作者发布兼容更新,或寻找功能替代插件
  5. 确认无异常后正常重新启用其他插件

提示:恢复模式只隔离出错的插件,不会影响访客访问——所以不要急着整站回滚,先按邮件提示处理那个插件。

上传与资源(12 条)

上传文件超出大小限制

The uploaded file exceeds the upload_max_filesize directive in php.ini

上传的图片或文件超过服务器允许的大小上限。

可能原因
  • upload_max_filesize 与 post_max_size 设置过小
  • Nginx 的 client_max_body_size 未同步调整
  • 主题或插件单独限制了上传尺寸
解决方法
  1. 调整 PHP 配置:upload_max_filesize=64M、post_max_size=64M、max_file_uploads=20
  2. 同步调整 Nginx:client_max_body_size 64M; 并重载 Nginx
  3. 重启 PHP-FPM 让配置生效(宝塔改完配置会自动重载)
  4. 确认 WordPress 上传限制已同步(媒体库页面会显示当前上限)
代码 / 命令
; php.ini
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300

# nginx.conf
client_max_body_size 64M;

提示:注意 post_max_size 必须大于等于 upload_max_filesize,否则改了也不生效。

上传图片出现 HTTP 错误

上传时提示「HTTP 错误」,图片无法插入

上传请求被中断,多见于图片处理、权限或内存问题。

可能原因
  • 图片尺寸过大,PHP 处理时内存或超时溢出
  • WordPress 无法创建 uploads 子目录(权限/属主问题)
  • image.php / 图片处理函数失败(GD 或 Imagick 扩展问题)
  • 服务器 mod_security 或 WAF 拦截了上传请求
解决方法
  1. 把大图压缩到 2500px 以内再上传,或提高内存与超时限制
  2. 检查 /wp-content/uploads 权限为 755、属主为网站用户,必要时递归修正
  3. 确认 PHP 已启用 GD 库或 Imagick 扩展(宝塔 → PHP 设置 → 扩展)
  4. 暂时关闭 WAF/mod_security 复测,确认后把上传接口加白名单
  5. 用「重新生成缩略图」插件批量修复历史图片
代码 / 命令
# 修复 uploads 目录权限
chown -R www:www /www/wwwroot/你的站点/wp-content/uploads
chmod -R 755 /www/wwwroot/你的站点/wp-content/uploads

无法创建目录(uploads 权限)

Unable to create directory wp-content/uploads/2026/09. Is its parent directory writable by the server?

WordPress 没有权限在 uploads 下新建按日期分的目录。

可能原因
  • uploads 目录权限或属主错误(如 root 属主)
  • 服务器磁盘空间写满
  • 目录被设置了只读属性
  • SELinux/安全策略限制写入(部分海外主机)
解决方法
  1. 用命令行或宝塔把 uploads 及子目录属主改为网站运行用户(通常 www 或 www-data)
  2. 目录权限设为 755,不要用 777 兜底(有安全风险)
  3. 检查磁盘剩余空间,清理日志与备份文件
  4. 若开启 SELinux,执行恢复上下文命令或联系主机商
代码 / 命令
# 递归修正属主与权限
own -R www:www wp-content/uploads
find wp-content/uploads -type d -exec chmod 755 {} \;
find wp-content/uploads -type f -exec chmod 644 {} \;

混合内容 Mixed Content(HTTPS 站点加载 HTTP 资源)

浏览器提示「不安全的内容」或 Mixed Content,样式/图片异常

页面是 HTTPS,但内部仍引用了 HTTP 资源,浏览器直接拦截加载。

可能原因
  • 主题/插件中硬编码了 http:// 的资源地址
  • 数据库中的图片、链接仍是旧 http 地址
  • CDN / OSS 域名未启用 HTTPS 或未配置证书
  • 迁移到 HTTPS 后未做全站地址替换
解决方法
  1. 优先在数据库层面批量替换 http://你的域名 → https://你的域名(先备份!)
  2. 用 WP-CLI 搜索替换,或使用 Better Search Replace 插件(注意序列化数据)
  3. 检查 OSS/CDN 是否已开启 HTTPS 并绑定证书
  4. 浏览器 F12 → Console 查看具体被拦的资源地址,逐个溯源修复
代码 / 命令
# WP-CLI 安全替换(先备份数据库!)
wp search-replace 'http://www.yoursite.com' 'https://www.yoursite.com' --all-tables --precise --dry-run
# 确认无误后去掉 --dry-run 执行

提示:替换前一定用 –dry-run 预演,且不要直接对有序列化数据的字段用 SQL 硬替换,会破坏数据。

图片不显示 / 缩略图错乱

图片显示裂图,或缩略图与内容不匹配

图片文件被移动、重命名,或缩略图索引与实际文件不一致。

可能原因
  • 迁移或更换图片处理插件后,缩略图尺寸变更导致缺失
  • 文件被 OSS/CDN 镜像后原路径失效
  • 图片文件名含中文或特殊字符,服务器无法识别
  • 缓存插件把图片缓存成了错误的响应
解决方法
  1. 安装「Force Regenerate Thumbnails」类插件,重新生成全部缩略图
  2. 检查媒体库中图片的实际 URL,访问该 URL 确认返回 200 而非 403/404
  3. 确认 OSS/CDN 镜像插件排除规则正确,原站图片路径未被改写坏
  4. 查看图片 URL 是否被大小写、空格或中文名影响,必要时批量重命名
  5. 清理 CDN 与页面缓存后复测

提示:使用 OSS 镜像同步的站点,出现图片不显示时优先检查「本地文件是否已同步到 OSS」以及镜像插件的排除规则。

OSS/CDN 缓存导致内容不更新

修改了文章或样式,但前台看到的还是旧内容

边缘缓存或对象存储缓存未刷新,请求没有回源。

可能原因
  • CDN/ESA 缓存了 HTML 或静态资源,未及时刷新
  • OSS 镜像缓存未随本地文件更新(增量同步延迟)
  • 浏览器本地缓存了旧版 CSS/JS
  • 缓存插件与 CDN 双重缓存叠加
解决方法
  1. 在 CDN 控制台手动刷新相关 URL 或目录(ESA 支持按路径刷新)
  2. 修改静态资源引用时加版本号参数(如 style.css?ver=日期)
  3. 确认镜像插件的同步策略与排除规则,必要时手动触发一次全量同步
  4. 浏览器用 Ctrl+F5 强制刷新,或开启无痕窗口验证
  5. 配置合理的缓存过期时间(HTML 短、静态资源长)

提示:排查顺序固定为:先无痕验证 → 再看 CDN 是否命中缓存 → 最后查源站内容是否正确。

图像后期处理失败

The server cannot process the image. This can happen if the server is out of memory or lacks the required image processing libraries.

WordPress 无法生成缩略图,常见于大图上传或图片处理库缺失。

可能原因
  • PHP 未启用 GD 或 Imagick 扩展
  • 图片尺寸过大,处理时内存不足
  • uploads 目录不可写
  • 图片格式特殊(如 CMYK 的 JPEG、超大 PNG)
  • PHP 版本与图片库不兼容(如 Imagick 版本过旧)
解决方法
  1. 安装并启用 GD 或 Imagick 扩展(阿里云的 Imagick 需注意版本)
  2. 把 uploads 目录权限设为 755、属主为网站用户
  3. 调高内存与执行时间:memory_limit 512M、max_execution_time 300
  4. 先把图片缩放到 2500px 以内再上传
  5. 在站点健康 → 媒体处理中确认可用的图片编辑器(推荐调整为 GD)
代码 / 命令
// wp-config.php 强制使用 GD 编辑器(Imagick 异常时的兜底)
add_filter( 'wp_image_editors', function () {
    return array( 'WP_Image_Editor_GD' );
} );

上传的图片不是有效图片

抱歉,由于服务器无法处理该图片,此图片无法上传 / 此文件不是有效的图片

文件校验未通过,可能是格式、损坏或权限问题。

可能原因
  • 图片文件实际损坏或扩展名与实际格式不符(如把 webp 改名为 jpg)
  • 文件过大导致处理中断
  • 服务器缺少对应格式支持(webp / avif 需较新 GD)
  • 上传目录不可写
解决方法
  1. 用图片编辑软件重新导出为普通 JPG/PNG 后再上传
  2. 确认 GD 版本支持目标格式(webp 需要 GD 2.1+ 及 PHP 7.4+)
  3. 压缩图片尺寸后重试
  4. 检查上传目录权限与磁盘空间

提示:WordPress 5.3+ 还支持 HEIC 以外的多数常见格式,遇到手机截图上传失败,先转成 JPG 验证。

The link you followed has expired

The link you followed has expired. Please try again.

安全令牌(Nonce)校验失败或请求超时,多见于主题/插件上传、导入数据。

可能原因
  • 上传文件超过 post_max_size 或 max_execution_time,请求被截断
  • 页面停留太久,Nonce 已过期
  • WAF/安全插件拦截了带参数的 POST 请求
  • 同一请求被重复提交
解决方法
  1. 提高 PHP 上传与执行限制:upload_max_filesize / post_max_size 调大、max_execution_time 300
  2. 同步调整 nginx 的 client_max_body_size 并重载
  3. 刷新页面后重新提交(获取新的 Nonce)
  4. 检查 WAF 拦截日志,为该路径放行
  5. 改用 FTP 上传主题/插件包,绕过 PHP 上传限制

提示:这条报错 90% 是「请求体太大或耗时过长被截断」,先看上传限制再看 Nonce。

目标文件夹已存在

Destination folder already exists. / 安装失败:目标文件夹已存在

安装主题或插件时,同名目录已存在于服务器上。

可能原因
  • 之前安装过同名插件/主题但未彻底卸载
  • 安装过程被中断留下了残留目录
  • 通过 FTP 上传过一次同名目录
解决方法
  1. 通过 FTP/宝塔文件管理进入 wp-content/plugins(或 themes),删除同名目录
  2. 回到后台重新安装
  3. 若想保留旧数据,先重命名旧目录再安装新版本
  4. 确认删除前已备份自定义修改的文件

提示:删除前务必确认该目录不是当前启用的主题/插件,否则会直接导致站点异常。

上传主题或插件包过大

The package could not be installed. The uploaded file exceeds the upload_max_filesize directive.

上传的 zip 包超过服务器限制,尤其是商业主题与含素材的插件。

可能原因
  • upload_max_filesize / post_max_size 太小(默认常见 2M)
  • nginx client_max_body_size 未同步调整
  • 主机的 PHP 配置不允许修改
解决方法
  1. 调大 PHP 与 Nginx 的上传限制并重启服务
  2. 无法改配置时改用 FTP 上传:解压后把目录放到 wp-content/themes 或 plugins
  3. 上传后在后台「主题/插件」列表确认已识别并启用
  4. 确认 zip 内是单层目录结构(多一层目录会导致安装失败)
代码 / 命令
; php.ini
upload_max_filesize = 64M
post_max_size = 64M

# nginx
client_max_body_size 64M;

图片上传后被压缩变模糊

上传的图片清晰度明显下降,细节丢失

图片压缩比例过大,或原始尺寸被过度缩放。

可能原因
  • 压缩插件质量参数设得过低(如 60% 以下)
  • 图片处理时被强制缩小到很小的最大尺寸
  • 使用了有损 WebP/AVIF 转换且质量设置偏低
  • WordPress 默认会生成多个裁剪尺寸,被拿去当主图使用
解决方法
  1. 把压缩质量调整到 82%-90% 之间(肉眼几乎无差别的合理区间)
  2. 确认最大宽度限制不低于 1600-1920px
  3. 关闭有损转码,或把 WebP 质量单独上调
  4. 上传前自行用高质量参数导出,避免二次压缩叠加
  5. 对比压缩前后的文件大小与画质,确定实际生效的参数

提示:图片优化插件的默认质量往往偏激进,设计感强的站点建议把质量固定在 85% 左右。

登录与后台(8 条)

忘记密码 / 无法登录后台

输入的密码不正确,且无法通过邮件重置

忘记密码且站点发不出邮件时,需要手动重置。

可能原因
  • 确实遗忘密码,或邮箱收不到重置邮件
  • 站点邮件功能不通(未配置 SMTP)
  • 账号被安全插件锁定
  • 被 WAF 拦截了登录请求
解决方法
  1. 方法一:数据库改密码 —— 进入 wp_users 表,把 user_pass 字段替换为 MD5 临时值,登录后立即改密码
  2. 方法二:用 WP-CLI 一条命令重置(推荐)
  3. 方法三:宝塔文件管理新建一个临时 PHP 文件,用 wp_set_password() 重置后删除
  4. 确认是否被安全插件锁定,从其日志或防火墙中解封 IP
  5. 重置成功后立刻修改为强密码,并更新后台邮箱
代码 / 命令
# 方法二:WP-CLI 重置密码
wp user update 1 --user_pass='新密码'

-- 方法一:数据库替换(登录后用后台改成新密码)
UPDATE wp_users SET user_pass = MD5('临时密码') WHERE user_login = 'admin';

登录后立即跳回登录页

输入账号密码后仍停留在 wp-login.php

登录 Cookie 无法写入或被判定失效。

可能原因
  • 站点地址(URL) 与实际访问域名不一致(www 与不带 www、http 与 https 混用)
  • CDN/反向代理下未正确传递协议头,WordPress 判断出错
  • 浏览器禁用了 Cookie,或安全软件拦截 Cookie
  • 缓存插件缓存了登录页
解决方法
  1. 统一域名与协议:确定一个规范地址(如 https://www.yoursite.com),其余 301 跳转过去
  2. 在 wp-config.php 中强制 WP_HOME / WP_SITEURL
  3. 反向代理环境下配置正确的 HTTPS 识别头(X-Forwarded-Proto)
  4. 登录页与 admin 路径加入缓存排除规则
  5. 更换浏览器或用无痕模式验证是否 Cookie 问题
代码 / 命令
// 反向代理下识别 HTTPS(仅在 CDN 终结 SSL 时需要)
if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && 'https' === $_SERVER['HTTP_X_FORWARDED_PROTO'] ) {
    $_SERVER['HTTPS'] = 'on';
}

无法安装插件:无法创建目录

安装失败:无法创建目录 / Could not create directory

WordPress 没有权限在 plugins 或 themes 目录写入文件。

可能原因
  • plugins/themes 目录属主或权限不正确
  • 目录磁盘空间不足或配额已满
  • 服务器设置了 open_basedir 限制
  • 文件系统为只读(少见,多为挂载异常)
解决方法
  1. 把 wp-content 下目录属主改为网站运行用户,权限 755
  2. 确认磁盘有剩余空间
  3. 检查 PHP 的 open_basedir 是否限制了访问范围
  4. 临时方案:手动下载插件 zip,解压后通过 FTP 上传到 plugins 目录
代码 / 命令
chown -R www:www /www/wwwroot/你的站点/wp-content
find /www/wwwroot/你的站点/wp-content -type d -exec chmod 755 {} \;

更新失败:另一更新正在进行

另一更新正在进行 / 更新失败:响应不是有效的 JSON

更新锁未被释放,或更新请求被拦截、超时。

可能原因
  • 上次更新中断,core_updater.lock 残留
  • 服务器超时/内存不足导致更新请求中断
  • WAF 拦截了更新请求,返回 HTML 而非 JSON
  • 磁盘空间不足
解决方法
  1. 删除数据库 wp_options 表中 option_name = ‘core_updater.lock’ 的记录
  2. 提高内存与超时限制后重试更新
  3. 检查 WAF 是否拦截了 admin-ajax / 更新接口
  4. 磁盘留出足够空间后重试
  5. 仍失败时手动上传更新包覆盖(后台 → 更新 → 手动上传)

提示:更新前务必先做整站备份(文件 + 数据库),失败时可快速回滚。

后台样式错乱 / 后台功能异常

wp-admin 页面排版全乱、按钮无反应、编辑器打不开

后台 CSS/JS 资源未加载或被拦截。

可能原因
  • WAF/CDN 拦截了 /wp-admin/、/wp-includes/ 下的静态资源
  • 混合内容问题(HTTPS 站点加载 HTTP 资源)
  • 浏览器扩展(广告拦截、安全插件)拦截了后台脚本
  • 缓存插件对后台做了错误缓存
  • 文件权限问题导致资源 403
解决方法
  1. 按 F12 → Console 与 Network 查看具体 404/403/被拦资源
  2. 无痕窗口 + 禁用浏览器扩展后复测
  3. WAF/CDN 中放行 /wp-admin/ 与 /wp-includes/ 路径
  4. 清除 CDN 缓存与浏览器缓存
  5. 确认站点地址与协议统一为 HTTPS

提示:如果只有你自己(或某个 IP)看不到后台样式,多半是 WAF 把静态资源当成了攻击请求。

无法保存文章 / 保存后内容丢失

更新失败。此响应不是合法的 JSON 响应。 / 保存后内容变成空白

编辑器的保存请求(REST)被拦截或返回了非 JSON 内容。

可能原因
  • WAF/安全插件拦截了 /wp-json/ 的 POST 请求
  • 某个插件在 REST 响应中输出了额外内容(警告、BOM)
  • 服务器超时导致长文章保存失败
  • 浏览器或网络波动导致请求中断
解决方法
  1. F12 查看保存时 /wp-json/wp/v2/posts 的返回内容,确认是否被拦截或含乱码
  2. WAF 放行 /wp-json/ 路径
  3. 开启调试日志,检查是否有 PHP 警告混入 REST 响应
  4. 长文章先保存为草稿,分批编辑;提高执行时间与内存
  5. 换一个浏览器验证,排除本地扩展干扰

提示:保存失败时先别关闭编辑器——用 Ctrl+A 复制内容到记事本,避免白写。

您没有足够的权限访问此页面

Sorry, you are not allowed to access this page.

当前用户角色权限不足,或管理员角色被误改。

可能原因
  • 账号被降级为订阅者/作者等低权限角色
  • 安全插件修改了角色权限
  • 多站点网络中权限未开启
  • 数据库 wp_usermeta 中的角色数据异常
解决方法
  1. 确认登录账号的邮箱与用户 ID 是否为真正的管理员
  2. 在数据库中检查 wp_usermeta 里 wp_capabilities 是否为 administrator
  3. 必要时用 WP-CLI 赋予管理员角色(见下方命令)
  4. 停用会改写权限的安全插件复测
  5. 检查是否开启了多站点但未 super admin 授权
代码 / 命令
# 用 WP-CLI 赋予管理员角色
wp user add-cap 1 manage_options
wp user update 1 --role=administrator

后台左侧菜单缺失或空白

登录后台后左侧菜单不全,或整个菜单区域空白

菜单注册被拦截,或权限/JS 加载异常。

可能原因
  • 安全插件或角色管理插件隐藏了菜单项
  • 后台 JS 加载失败(资源被拦或 JS 报错)
  • PHP 报错导致菜单注册中断
  • 浏览器扩展屏蔽了后台脚本
解决方法
  1. F12 查看 Console 是否有 JS 报错,Network 是否有 403/404 资源
  2. 开启调试日志确认是否有 PHP 致命错误
  3. 禁用浏览器扩展并用无痕窗口复测
  4. 检查角色权限插件是否误配了菜单显示规则
  5. 停用最近安装的插件验证

提示:后台菜单空白常常是某个插件抛出致命错误后的连锁反应,优先查 debug.log。

邮件(2 条)

WordPress 无法发送邮件

邮件未发出 / 自己收不到测试邮件 / 跑到垃圾箱

默认 PHP mail() 在多数主机上不可用或极易被判为垃圾邮件。

可能原因
  • 服务器未配置邮件服务,mail() 函数被禁用
  • 发件域名缺少 SPF / DKIM / DMARC 记录
  • 发件邮箱与域名不匹配,被收件方判定为伪造
  • 虚拟主机限制外发邮件
解决方法
  1. 安装 WP Mail SMTP 类插件,用第三方 SMTP(企业邮箱 / 阿里云邮件推送 / 腾讯企业邮)发送
  2. 在 DNS 中配置 SPF、DKIM、DMARC 记录,提升送达率
  3. 发件人邮箱设为与域名一致的地址(如 no-reply@你的域名.com)
  4. 发送测试邮件验证,并检查垃圾箱
  5. 确认插件通知邮件也走 SMTP,避免漏发
代码 / 命令
; 示例 SPF 记录(DNS TXT)
v=spf1 include:spf.mail.qq.com ~all

联系表单收不到邮件

用户提交了表单,但后台邮箱毫无记录

表单插件未配置 SMTP,或被垃圾拦截、被插件冲突影响。

可能原因
  • 未配置 SMTP,依赖服务器 mail() 导致静默失败
  • 邮件进入了垃圾箱或垃圾过滤规则
  • 表单被反垃圾机制拦截(未通过验证)
  • 插件冲突导致提交动作未执行
解决方法
  1. 先配置好 SMTP 并做一次测试发送
  2. 在表单后台查看「提交记录」(多数表单插件提供记录功能),确认请求是否到达
  3. 为表单配置 reCAPTCHA 等反垃圾,同时把通知邮箱加入白名单
  4. 检查是否有缓存插件缓存了表单页面导致 nonce 过期
  5. 用第三方表单服务(如 Formspree)作为兜底

提示:只要修好 SMTP,绝大多数「收不到邮件」问题都会消失,这是排查的第一顺位。

插件与主题(4 条)

插件冲突(万能排查法)

开启某功能后站点异常、页面错乱、功能失效

两个及以上插件争夺同一钩子或资源,导致行为冲突。

可能原因
  • 多个插件实现了同名函数/类,或重复加载同一前端库
  • 插件对同一请求做了相反处理(缓存与优化类最典型)
  • 插件版本过旧,与新版 WordPress 不兼容
  • 插件间通过同一 filter 互相覆盖返回值
解决方法
  1. 先备份站点,再按顺序停用插件(建议按占用资源/影响面从大到小)
  2. 若停用某插件后恢复正常,则该插件为嫌疑对象
  3. 逐个重新启用,定位到与它冲突的具体插件
  4. 把两者的设置错开(如只保留一个缓存插件、一个图片优化插件)
  5. 仍冲突时寻找替代插件,或向作者提交冲突报告

提示:WordPress 官方推荐的排查法:全部停用 → 逐个启用。虽然繁琐,但最可靠。

主题冲突 / 自定义代码更新后丢失

主题更新后自定义功能消失,或启用新主题后站点异常

直接修改主题文件,更新时会被覆盖;或主题与插件功能重复。

可能原因
  • 自定义代码直接写在父主题的 functions.php / header.php 中
  • 启用了与当前主题功能重叠的插件(如两套页面构建器)
  • 新主题不兼容已启用的插件或页面数据格式
解决方法
  1. 把自定义代码迁移到子主题(推荐)或 WPCode 代码片段中
  2. 创建子主题:新建 themes/你的主题-child 目录,放入 style.css 与 functions.php
  3. 切换主题前先备份数据库(页面构建器数据与主题强相关)
  4. 用「健康检查」类插件在隔离环境下测试主题与插件组合
代码 / 命令
/* 子主题 style.css 头部示例 */
/*
Theme Name: YRWP Child
Template: 父主题目录名
Version: 1.0
*/

启用插件后站点崩溃(恢复模式)

Your site is experiencing a technical issue(WordPress 恢复模式)

插件触发致命错误,WordPress 自动进入恢复模式并邮件通知。

可能原因
  • 插件与新版本 WordPress / PHP 不兼容
  • 插件代码存在致命错误或依赖缺失
  • 插件与服务器环境(内存、扩展)不匹配
解决方法
  1. 点击邮件里的恢复模式链接进入后台,直接停用问题插件
  2. 看不到邮件时,用 FTP 重命名该插件目录使其强制停用
  3. 停用后查看错误日志确认具体原因
  4. 等待作者修复更新,或寻找替代插件
  5. 确认后再重新启用并观察

提示:恢复模式邮件里的链接有时效,尽快处理;建议同时开启 WP_DEBUG_LOG 留存证据。

WooCommerce 结账或购物车异常

加入购物车失败 / 结账页一直转圈 / 订单无法提交

WooCommerce 依赖 AJAX 与 Session,容易被缓存与安全插件破坏。

可能原因
  • 缓存插件缓存了购物车、结账等动态页面
  • REST/AJAX 请求被 WAF 拦截
  • 缺少必要的 PHP 扩展(如 intl、bcmath)
  • 某个插件冲突导致 AJAX 无响应
解决方法
  1. 把购物车、结账、我的账户页面加入缓存排除(绝不缓存)
  2. WAF 放行 /wp-json/wc/ 与 admin-ajax.php
  3. 按 WooCommerce 官方要求检查 PHP 扩展与内存(建议 512M)
  4. 停用其他插件测试;启用 WooCommerce 自带兼容性检查
  5. 清空缓存后清理 WooCommerce 的 session 表

提示:WooCommerce 站点的缓存规则第一条铁律:购物车与结账页面永远是动态页,一旦被缓存就会出现诡异的下单失败。

性能(6 条)

网站打开缓慢 / TTFB 过高

页面首字节时间(TTFB)超过 1 秒,加载卡顿

服务器响应慢或资源过多,是体验与 SEO 的共同敌人。

可能原因
  • 未开启任何缓存(页面缓存、对象缓存均无)
  • PHP 版本偏低(7.x 相比 8.x 慢很多)
  • 数据库查询过多或存在慢查询
  • 图片未压缩、未使用 WebP,静态资源未走 CDN
  • 服务器配置低或与访客距离远
解决方法
  1. 开启页面缓存 + 浏览器缓存(WP Rocket / LiteSpeed Cache 等,只装一个)
  2. PHP 升级到 8.1 及以上(多数站点提速 20%-50%)
  3. 安装查询监控类插件找出慢查询来源,优化或卸载相关插件
  4. 图片统一压缩并转 WebP,静态资源走 CDN/OSS
  5. 服务器层面开启 OPcache、Redis 对象缓存,并选择合适的机房地理位置

提示:优化顺序建议:PHP 版本 → 缓存 → 图片 → CDN → 数据库,性价比依次递减。

CPU / 内存占用过高

主机频繁告警 CPU 超限,站点间歇性无法访问

某个请求持续消耗资源,或被大量爬虫抓取。

可能原因
  • 恶意爬虫 / 扫描器高频访问(尤其是不存在的路径)
  • wp-cron 被每次访问触发,任务堆积
  • 插件死循环或定时任务过于频繁
  • 被 CC/DDoS 攻击
解决方法
  1. 查看服务器访问日志,统计高频 IP 与 UA,用防火墙封禁或限速
  2. 关闭 WP 内置 Cron,改用服务器系统 Cron(见下方代码)
  3. 检查插件定时任务频率,改到低峰期执行
  4. 开启 WAF / CDN 防护,拦截恶意爬虫与扫描
  5. 限制 XML-RPC(如非必要可直接禁用)
代码 / 命令
// wp-config.php 关闭内置 cron
define( 'DISABLE_WP_CRON', true );

# 系统 crontab 每 15 分钟执行一次
*/15 * * * * curl -s https://你的域名/wp-cron.php?doing_wp_cron > /dev/null 2>&1

缓存不生效

开启了缓存插件,但检测不到缓存命中,速度没变化

缓存规则未生效或被其他层绕过/冲突。

可能原因
  • 存在两个及以上缓存插件,彼此覆盖配置
  • Nginx/服务器层面缺少缓存目录写入权限
  • CDN 未缓存 HTML,或回源时携带了 no-cache 头
  • 动态页面(登录态、购物车)本来就不该被缓存
解决方法
  1. 只保留一个缓存插件,卸载并清理其余插件的残留规则
  2. 确认缓存目录可写,权限正确
  3. 检查 CDN 缓存规则,HTML 可设短缓存(如 10 分钟)或配合缓存插件
  4. 用无痕窗口(未登录)验证缓存是否生效
  5. 排除后台、登录页、购物车等不应缓存的路径

提示:验证缓存最简单的办法:无痕打开页面 → 查看响应头或页面底部注释,看是否出现缓存命中标识。

主机提示资源超限(Resource Limit Is Reached)

Resource Limit Is Reached / 508 资源限制已达到

共享主机对 CPU、内存、并发连接有硬限制,超限后被临时限制访问。

可能原因
  • 网站流量超出套餐限制,或遭遇爬虫/攻击
  • 插件或主题存在性能问题,单请求消耗过大
  • 未开启缓存,所有请求都走 PHP 与数据库
  • 同一主机账户下多个站点同时占用资源
解决方法
  1. 先看主机面板的统计图表,确认是 CPU、内存还是并发超限
  2. 开启页面缓存与对象缓存,减少 PHP 与数据库压力
  3. 宝塔/日志中排查异常 IP 与高频 UA,用防火墙封禁
  4. 停用资源大户插件(实时统计、爬虫抓取、备份类)
  5. 持续超限则升级主机套餐或换用独立服务器

提示:出现这个提示时站点通常仍能间歇访问,尽快优化,否则可能被主机直接暂停。

网站被主机暂停

This Account has been suspended / 账户已被暂停

超资源、超流量、欠费或被投诉后,主机商直接暂停了整个账户。

可能原因
  • CPU/内存长期超限被判定影响其他用户
  • 流量或磁盘配额耗尽
  • 账户欠费未续费
  • 站点被投诉(如被用于钓鱼、垃圾邮件)
解决方法
  1. 登录主机商后台查看暂停原因与通知邮件
  2. 缴清欠费或购买更大套餐
  3. 按提示提交整改说明,申请恢复;多数主机商在整改后可解封
  4. 恢复后立即做性能优化与安全加固,避免再次被暂停
  5. 重要站点建议同时准备备用主机与定期异地备份

提示:被暂停期间域名通常仍可解析到主机页,但数据不要自行删除——先联系主机商确认数据是否保留。

后台卡顿(admin-ajax.php 请求过多)

后台操作缓慢,浏览器 Network 中大量 admin-ajax.php 请求

插件在后台轮询或频繁请求,拖慢后台响应。

可能原因
  • 实时统计、心跳、通知类插件高频轮询
  • 仪表盘加载了过多远程数据(新闻、统计面板)
  • 插件在后台加载了未优化的资源
  • 服务器响应慢叠加请求数量多
解决方法
  1. F12 → Network 过滤 admin-ajax.php,确认是哪个请求(参数中的 action)在持续轮询
  2. 对应插件中关闭实时刷新/自动轮询功能,或改用页面缓存
  3. 精简后台仪表盘组件,移除不必要的统计小工具
  4. 开启对象缓存(Redis)减轻数据库压力
  5. 停用长期不用的插件,减少后台资源加载

提示:如果后台慢但前台很快,问题一定在后台请求或仪表盘组件上,不必去查前端性能。

安全(3 条)

网站被挂马 / 莫名跳转

从搜索引擎进入时跳转到赌博/色情站,或页面被插入陌生代码

站点文件或数据库被注入恶意代码,常见于弱口令、插件漏洞、服务器被入侵。

可能原因
  • 后台使用了弱密码,或存在默认 admin 账号
  • 插件/主题存在已知漏洞且长期未更新
  • 服务器其他站点被入侵后横向渗透
  • 主题文件被插入了加密的恶意代码
解决方法
  1. 立即修改所有管理员密码(含数据库、主机面板、FTP 密码),启用强密码与两步验证
  2. 用安全插件做全站文件扫描,或直接对比主题/插件文件与官方包的差异
  3. 重点检查 functions.php、header.php、index.php、wp-config.php 等高频注入文件
  4. 检查数据库 wp_posts、wp_options 是否被插入恶意脚本或重定向代码
  5. 从干净备份恢复,并更新全部插件/主题与 WordPress 到最新版
  6. 联系主机商排查服务器层面的入侵痕迹

提示:被挂马后不要只删表面代码,务必确认入侵入口已封堵,否则很快会被再次注入。

后台登录被暴力破解

日志中出现大量 POST /wp-login.php 请求,账号被锁或内存被占满

自动化脚本持续尝试登录,消耗服务器资源并存在被攻破风险。

可能原因
  • 站点暴露了默认后台地址与常见管理员用户名(admin)
  • 未启用登录失败限制与验证码
  • IP 未做访问限制,暴露在公网任人尝试
解决方法
  1. 修改后台登录地址(用插件或 Nginx 规则改写 wp-login.php 路径)
  2. 启用两步验证(TOTP),并限制登录失败次数
  3. 修改默认管理员用户名,避免使用 admin
  4. 在防火墙中限制后台仅允许自己的 IP 访问
  5. 配置 fail2ban 或云 WAF 自动封禁暴力破解 IP
代码 / 命令
# Nginx 保护 wp-login.php(示例:仅允许指定 IP)
location = /wp-login.php {
    allow 1.2.3.4;
    deny all;
}

Cloudflare / WAF 报 Error 1020

Error 1020 Access Denied / 您的访问被拒绝

边缘防火墙规则(WAF 自定义规则)拦截了该请求。

可能原因
  • WAF 规则把正常请求误判为攻击(常见于含 SQL 关键词、特殊参数的 URL)
  • 后台或 REST 路径被安全规则覆盖
  • IP 被列入黑名单或速率限制触发
  • 浏览器 UA 被规则拦截
解决方法
  1. 登录 CDN/WAF 控制台,查看安全事件日志,确认触发的具体规则
  2. 把后台、REST、admin-ajax 路径加入跳过规则(Bypass)
  3. 为自己的办公 IP 建立白名单规则
  4. 调整速率限制阈值,避免正常操作触发
  5. 若为阿里云 ESA/WAF,检查自定义规则与 Bot 管理策略

提示:REST API 被 1020 拦截会表现为「编辑器保存失败」「AI 助手不回复」,排查时优先看 WAF 事件日志。

其他问题(9 条)

中文乱码

文章内容显示为乱码或问号

字符集不一致,导入导出或数据库迁移时最常见。

可能原因
  • 数据库或数据表字符集不是 utf8mb4
  • 导入 SQL 文件时未指定字符集
  • 手动编辑文件时保存成了 GBK 编码
  • 主题缺少 UTF-8 声明
解决方法
  1. 统一数据库、表、字段字符集为 utf8mb4,排序规则 utf8mb4_unicode_ci
  2. 导入时指定字符集:mysql –default-character-set=utf8mb4
  3. 编辑 PHP 文件统一另存为 UTF-8(无 BOM)
  4. 检查 wp-config.php 中 DB_CHARSET 为 utf8mb4、DB_COLLATE 为空
代码 / 命令
-- 转换数据库字符集
ALTER DATABASE 数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 导入时指定编码
mysql --default-character-set=utf8mb4 -u用户 -p 数据库名 < backup.sql

提示:WordPress 官方建议 DB_CHARSET 使用 utf8mb4,可以完整支持 emoji 与生僻字。

时间日期显示错误

文章发布时间与本地时间相差 8 小时

时区设置或数据库时区与站点时区不一致。

可能原因
  • 后台 → 设置 → 常规中的时区未设置或设错
  • 服务器系统时间不是东八区
  • 部分插件自行读取服务器时间,忽略 WordPress 时区设置
解决方法
  1. 后台 → 设置 → 常规 → 时区,选择「上海」并保存
  2. 服务器层面校准时间:timedatectl set-timezone Asia/Shanghai
  3. 同步一次 NTP 时间:timedatectl set-ntp true
  4. 排查是否有插件硬编码了时区,更新或更换插件
代码 / 命令
# 校准服务器时区与时间(Linux)
timedatectl set-timezone Asia/Shanghai
timedatectl set-ntp true
date  # 验证输出

定时任务(wp-cron)不执行

定时发布文章未按时发布,计划任务日志为空

WordPress 的伪 Cron 依赖访客访问触发,低流量站点很容易不执行。

可能原因
  • 站点流量太少,没有请求触发 wp-cron
  • DISABLE_WP_CRON 被开启但未配置系统 Cron
  • 服务器禁用了 loopback/curl 请求,wp-cron 无法自我触发
  • 任务队列被大量失败任务堵塞
解决方法
  1. 在服务器配置系统 Cron,定时访问 wp-cron.php(推荐做法)
  2. 检查 wp-config.php 是否需要开启 DISABLE_WP_CRON
  3. 用 WP Crontrol 类插件查看任务列表,清理失败的僵尸任务
  4. 确认服务器允许 loopback 请求(部分主机会禁用)
代码 / 命令
# 系统 crontab 示例:每 5 分钟触发一次
*/5 * * * * curl -s -o /dev/null https://你的域名/wp-cron.php?doing_wp_cron

robots.txt 返回 404

访问 /robots.txt 显示 404 或提示「搜索引擎无法访问」

WordPress 的虚拟 robots.txt 被服务器规则或物理文件干扰。

可能原因
  • 站点根目录存在物理 robots.txt 文件与虚拟文件冲突
  • 服务器伪静态规则异常导致请求未被 WordPress 接管
  • 设置了「对搜索引擎可见性」为不可见
  • 被安全插件或 WAF 拦截了该路径
解决方法
  1. 检查根目录是否存在 robots.txt 物理文件,删除或编辑它以匹配需求
  2. 后台 → 设置 → 阅读,确认未勾选「建议搜索引擎不索引本站」
  3. 后台 → 设置 → 固定链接,保存一次以重建重写规则
  4. WAF 中放行 robots.txt 与 sitemap 路径
  5. 生成 sitemap 后用站长工具提交验证

提示:SEO 与 GEO 优化都依赖 robots.txt 与 sitemap 正常,建议上线后立刻用站点工具检测一次。

RSS / Feed 报错

feed 页面报 XML 解析错误或显示乱码

输出中混入了额外字符或错误提示,破坏了 XML 结构。

可能原因
  • 文件开头有空白/BOM 输出,破坏了 XML 声明位置
  • 插件输出了调试信息或广告代码到 feed 中
  • PHP 警告信息被输出到 XML 内容里
  • feed 缺少正确的 Content-Type 或缓存出错
解决方法
  1. 排查最近修改过的文件是否有尾随空格或 BOM
  2. 关闭 WP_DEBUG_DISPLAY,避免警告混入输出
  3. 逐个停用会往 feed 插入内容的插件
  4. 清理 CDN 与页面缓存后重新访问 feed 地址验证
  5. 用 W3C Feed 验证工具校验 XML 结构

提示:feed 问题与「headers already sent」常同源,凡是输出污染类故障,都优先查空白与 BOM。

评论提交后不显示

访客提交评论成功,但评论列表中看不到

评论进入了待审核队列或被反垃圾机制拦截。

可能原因
  • 后台 → 设置 → 讨论中开启了「必须手动批准评论」
  • 被 Akismet 等反垃圾插件判定为垃圾评论
  • 缓存插件缓存了评论列表或 AJAX 请求被拦
  • 主题的评论模板异常
解决方法
  1. 后台 → 评论,查看「待审核」与「垃圾」两个列表
  2. 设置 → 讨论,按需调整审核策略与嵌套层级
  3. 把评论相关 AJAX 请求加入缓存排除规则
  4. 暂时停用反垃圾插件验证是否为误判
  5. 确认主题评论模板未被修改,必要时切默认主题测试

提示:如果只有老访客看不到新评论,多半是页面缓存——把评论接口加入缓存排除即可。

分页第二页起 404

首页正常,但 /page/2/ 或分类页第二页返回 404

分页重写规则或伪静态配置不匹配。

可能原因
  • 固定链接的伪静态规则未包含分页参数
  • 主题或插件修改了分页结构(如改了 posts_per_page)
  • 服务器伪静态规则与 WordPress 版本不匹配
  • 缓存插件保存了错误的 404 响应
解决方法
  1. 后台 → 设置 → 固定链接,直接保存一次重建规则
  2. 宝塔 → 网站 → 伪静态,重新选择 WordPress 规则并保存
  3. 清空缓存插件与 CDN 缓存
  4. 确认没有插件把分页数量改成了异常值
  5. 用默认主题测试,排除主题分页代码问题
代码 / 命令
# nginx 分页正确规则
location / {
    try_files $uri $uri/ /index.php?$args;
}

网站迁移后后台进不去

迁移服务器后前台正常,访问后台自动跳到旧域名或空白

数据库中的站点地址仍是旧域名,未做替换。

可能原因
  • wp_options 的 siteurl / home 未更新为新域名
  • 数据库中的文章内容、插图仍指向旧域名
  • wp-config.php 中的 WP_HOME / WP_SITEURL 硬编码了旧地址
  • DNS 未完全生效,本机 hosts 有旧记录
解决方法
  1. 先备份数据库,再用 WP-CLI 搜索替换新域名
  2. 修改 wp_options 表的 siteurl 与 home 两项为新域名
  3. 清理本机 hosts 记录与浏览器缓存后重试
  4. 检查 wp-config.php 是否硬编码了旧域名,同步更新
  5. 验证图片、链接、样式是否正常,必要时再做一次仅针对旧域名的替换
代码 / 命令
# 迁移后域名替换(先备份!)
wp search-replace 'https://旧域名.com' 'https://新域名.com' --all-tables --precise --dry-run
# 确认无误后去掉 --dry-run 执行

编辑器中提示「此区块包含无效内容」

此区块包含无效内容,预览或编辑时出现异常

区块保存的数据结构与当前版本不匹配,多为插件停用或版本变化所致。

可能原因
  • 原本生成该区块的插件已被停用或删除
  • 区块插件版本升级后数据结构变化
  • 内容从其他站点复制粘贴带来不兼容区块
  • HTML 被手动编辑破坏了区块注释
解决方法
  1. 确认该区块属于哪个插件,检查插件是否已启用
  2. 重新启用对应插件后刷新编辑器
  3. 在代码编辑器视图中查看区块注释是否完整(如 <!– wp:paragraph –>)
  4. 把无效区块转为「经典 HTML 区块」以保留内容
  5. 必要时用之前的修订版本回滚

提示:停用区块插件前,先把由它生成的区块内容转换为 HTML,可以避免大量内容变成「无效区块」。

更新与维护(8 条)

无法与站点通信(环回请求失败)

站点健康:无法与站点通信 / 环回请求(Loopback request)失败

WordPress 自己请求自己的接口失败,会连带影响自动更新、计划任务、REST 相关功能。

可能原因
  • 服务器禁用了 loopback 请求或对外访问
  • SSL 证书异常导致 https 自请求失败
  • Nginx 配置缺少对自身域名的解析(可能解析到旧 IP)
  • 安全插件/WAF 拦截了来自本机的请求
解决方法
  1. 站点健康 → 信息 → 服务器,确认是否显示环回请求失败与报错详情
  2. 检查服务器 hosts 文件,确保站点域名正确解析到本机 IP
  3. 确认 SSL 证书有效且未过期,自签证书需在服务器信任
  4. 在 WAF/防火墙中把本机 IP 加入白名单
  5. 若为虚拟主机限制,联系主机商开通 loopback 权限

提示:环回失败常被忽略,但它会连带导致「定时任务不执行」「自动更新失败」等一连串问题。

REST API 无法访问或报错

站点健康:REST API 遇到了错误 / 未返回有效的 JSON 响应

REST 接口被拦截或返回了异常内容,直接影响区块编辑器、页面构建器与移动端应用。

可能原因
  • 安全插件或 WAF 拦截了 /wp-json/ 路径
  • 服务器伪静态规则异常,REST 请求被当成普通页面处理
  • 某个插件在 REST 请求中输出了额外内容(破坏 JSON 结构)
  • 站点处于维护模式或需要登录才能访问 REST
解决方法
  1. 浏览器直接访问 https://你的域名/wp-json/ 与 /wp-json/wp/v2/posts 查看实际返回内容
  2. 检查 WAF 拦截日志,把 /wp-json/ 加入白名单
  3. 后台 → 设置 → 固定链接,保存一次重建重写规则
  4. 用排查法逐个停用插件,找出破坏 JSON 输出的那一个
  5. 确认没有插件强制要求 REST 登录鉴权
代码 / 命令
# 测试 REST 是否正常(返回 JSON 即正常)
curl -i https://你的域名/wp-json/
curl -i https://你的域名/wp-json/wp/v2/posts

无法建立到 WordPress.org 的连接

无法建立到 WordPress.org 的连接 / 更新失败:cURL error 28 / 35 / 60

服务器访问官方源失败,导致无法更新、无法搜索安装插件主题。

可能原因
  • 服务器 DNS 解析异常(无法解析 api.wordpress.org)
  • 服务器位于国内,访问官方源不稳定或被墙
  • SSL 证书验证失败(cURL error 60:证书链问题)
  • 主机商限制了外部请求(防火墙出站规则)
解决方法
  1. 用命令测试连通性:curl -I https://api.wordpress.org,观察返回码
  2. 确认服务器 DNS 可用:尝试改用 8.8.8.8 / 223.5.5.5
  3. cURL error 60 时确认服务器已安装 ca-certificates 并更新证书库
  4. 临时方案:用「手动上传」方式更新,或使用国内镜像源相关的更新插件
  5. 若主机封禁出站请求,联系主机商开通 443 端口出站
代码 / 命令
# 连通性排查
curl -I https://api.wordpress.org
curl -I https://downloads.wordpress.org
nslookup api.wordpress.org 223.5.5.5

# 更新 CA 证书(CentOS 示例)
yum install -y ca-certificates && update-ca-trust

安装插件提示需要 FTP 信息

To perform the requested action, WordPress needs to access your web server. Please enter your FTP credentials.

WordPress 无法直接写文件,要求输入 FTP 凭据才能继续安装。

可能原因
  • 文件属主与 PHP 运行用户不一致(最常见:属主是 root,PHP 以 www 运行)
  • 目录权限过严(不可写)
  • wp-config.php 中定义了 FS_METHOD 为 ftpsockets
  • 服务器禁用了 PHP 直接写文件的能力
解决方法
  1. 把站点目录属主改为 PHP 运行用户(宝塔一般为 www)
  2. 在 wp-config.php 中强制直接写入方式
  3. 确认真实目录权限:目录 755、文件 644
  4. 若主机强制走 FTP,则按提示填写 FTP 信息即可完成安装
代码 / 命令
// wp-config.php 中添加(在 /* That's all, stop editing! */ 之前)
define( 'FS_METHOD', 'direct' );

# 修正属主与权限
chown -R www:www /www/wwwroot/你的站点

更新失败:无法写入 wp-config.php

WordPress 更新过程中提示「无法写入 wp-config.php」,需手动添加密钥

小版本更新时需要写入安全密钥,但文件不可写。

可能原因
  • wp-config.php 文件权限过严或属主错误
  • 文件被设为只读属性
  • 服务器磁盘空间不足
解决方法
  1. 把 wp-config.php 权限临时改为 644(属主为网站用户)
  2. 完成更新后把权限恢复为 600 或 644(部分主机建议 600)
  3. 更新成功后清理浏览器缓存并验证站点正常
  4. 若磁盘已满,先清理日志与备份文件再重试
代码 / 命令
chmod 644 wp-config.php
# 更新完成后收紧权限
chmod 600 wp-config.php

站点一直处于维护模式

Briefly unavailable for scheduled maintenance. Check back in a minute.

更新被中断,主目录残留 .maintenance 文件,站点一直显示维护页。

可能原因
  • 更新过程中网络中断或进程被杀掉
  • 服务器超时/内存不足导致更新失败
  • 手动中断了正在进行的升级
  • 权限问题导致更新流程未走完
解决方法
  1. 通过 FTP/宝塔文件管理进入站点根目录,删除 .maintenance 文件
  2. 刷新站点确认恢复正常访问
  3. 进入后台 → 仪表盘 → 更新,查看是否有中断的更新任务,重新执行一次
  4. 更新前先备份,避免再次半途中断
  5. 若反复出现,请提高 PHP 内存与执行时间后重试

提示:删除 .maintenance 只是解除锁定;真正要做的是把没完成的更新跑完,否则功能可能处于半升级状态。

更新下载失败:Too Many Requests

下载失败:Too Many Requests

WordPress.org 对同一 IP 的下载请求做了限流,常见于多站点服务器。

可能原因
  • 同一服务器上多个站点同时更新,触发官方限流
  • 短时间反复重试更新
  • 服务器出口 IP 被官方临时封禁(共享主机更常见)
解决方法
  1. 等待 15-30 分钟后再重试,不要连续点击更新
  2. 同一服务器上的站点错开更新,避免并发请求
  3. 改用「手动上传」方式更新(下载 zip 上传覆盖或后台手动安装)
  4. 检查服务器是否有大量后台请求同时在跑

提示:限流是临时性的,等待即可恢复;被卡住时手动上传更新包最稳妥。

站点健康提示缺少 PHP 模块

站点健康:缺少必需的模块 / The required module ‘gd’ is not installed

服务器缺少 WordPress 或插件运行必需的 PHP 扩展。

可能原因
  • 服务器 PHP 未安装对应扩展(gd、curl、mbstring、imagick、zip 等)
  • 扩展已安装但未在 php.ini 中启用
  • 切换 PHP 版本后扩展未同步安装
解决方法
  1. 宝塔 → 软件商店 → 对应 PHP 版本 → 设置 → 安装扩展(gd、curl、mbstring、fileinfo、zip、imagick、opcache)
  2. 安装后重启 PHP-FPM 使扩展生效
  3. 回到站点健康确认提示消失
  4. 若为虚拟主机,联系主机商开通所需扩展
代码 / 命令
# 命令行查看已启用的扩展
php -m

# CentOS 安装示例
yum install -y php-gd php-curl php-mbstring php-zip php-fileinfo

页面构建器(6 条)

Elementor 编辑器一直转圈打不开

Elementor 编辑页面时一直加载中(Loading),无法进入编辑界面

编辑器依赖的 REST/AJAX 请求被拦截或资源未加载。

可能原因
  • 服务器内存不足(Elementor 编辑器要求至少 128M,建议 256M 以上)
  • WAF/CDN 拦截了 editor 相关请求(含 admin-ajax 与 REST)
  • 与主题/插件冲突(尤其是缓存、安全类插件)
  • PHP 版本过低或缺少必要扩展
  • Elementor 编辑器资源被浏览器扩展拦截
解决方法
  1. 提高内存:WP_MEMORY_LIMIT 512M、PHP memory_limit 512M、max_execution_time 300
  2. Elementor → 工具 → 站点设置,确认编辑器相关设置正常
  3. 按 Elementor 官方排查流程:切换到默认主题 + 停用除 Elementor 外的全部插件,逐个启回定位冲突
  4. WAF/CDN 放行 /wp-json/、admin-ajax.php 与 /wp-content/plugins/elementor/ 路径
  5. 开启调试日志,查看是否有致命错误在编辑器加载时产生
  6. 更新 Elementor 与 Pro Elements 到最新兼容版本
代码 / 命令
// 提高编辑器可用资源(wp-config.php)
define( 'WP_MEMORY_LIMIT', '512M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );
set_time_limit( 300 );

Elementor 提示内容区域未找到

Sorry, the content area was not found in your page. You must call the_content function in the current template.

主题模板没有输出 the_content(),Elementor 找不到渲染位置。

可能原因
  • 当前主题使用了自定义模板,未调用 the_content()
  • 使用了不兼容 Elementor 的主题或页面模板
  • 页面被设置为「Elementor 画布」以外的空白模板
  • 主题被修改过,移除了内容输出函数
解决方法
  1. 在主题模板(如 page.php / single.php / template-parts)中确认存在 the_content(); 调用
  2. 编辑该页面 → 页面属性 → 模板,切换为「Elementor 全宽」或「默认模板」后重试
  3. 更换为官方兼容主题(如 Hello Elementor)验证是否为主题问题
  4. 若为自定义模板,在内容区加上 the_content() 后再进入编辑器
代码 / 命令
<?php
// 主题模板中必须存在的内容输出
while ( have_posts() ) :
    the_post();
    the_content();
endwhile;

提示:你用的 Hello Elementor 是官方推荐主题,正常不会出现这个问题;出现时优先查是否改过模板文件。

Elementor 前台样式与编辑器不一致

编辑器里排版正常,前台访问时样式错乱或缺少样式

Elementor 生成的 CSS 文件未刷新或缓存未清理。

可能原因
  • Elementor 的 CSS 缓存未随修改更新
  • CDN/浏览器缓存了旧的 CSS 文件
  • CSS 打印方式设为外部文件但文件不可写
  • 缓存插件与 Elementor 的 CSS 优化功能冲突
解决方法
  1. Elementor → 工具 → 重新生成 CSS 与数据(Regular 与 Elementor 两项都执行)
  2. 清空缓存插件、CDN 与浏览器缓存(无痕窗口验证)
  3. Elementor → 设置 → 高级,把「CSS 打印方法」切换为「内部嵌入」(或反之)测试
  4. 暂停缓存插件的 CSS 合并/延迟加载功能后复测
  5. 确认 uploads 与 elementor/css 目录可写

提示:改完样式先执行一次「重新生成 CSS」,能解决绝大多数前后台不一致的问题。

Elementor 编辑器白屏或报错

进入 Elementor 编辑器后页面空白,或提示发生错误

编辑器加载时触发 PHP 致命错误或 JS 异常。

可能原因
  • 内存耗尽(编辑器是内存消耗大户)
  • 插件冲突导致编辑器请求失败
  • Elementor 与 Pro Elements 版本不匹配
  • 浏览器控制台存在 JS 报错
解决方法
  1. 提高内存与执行时间限制后重试
  2. F12 查看 Console 报错与 Network 失败请求,定位具体资源
  3. 停用其他插件(保留 Elementor)测试;再逐个启回定位冲突插件
  4. 确认 Elementor 与 Pro Elements / Elementor Pro 版本匹配(升级或降级对齐)
  5. 回滚到上一个可用版本快速恢复站点

提示:你使用的是 Elementor 4.1.1 + Pro Elements 4.1.0 的组合,版本不匹配是最常见的编辑器异常来源,升级时务必成对更新。

Elementor 模板库 / 图标库加载失败

无法连接到服务器 / 模板库一直加载不出来

编辑器需要从 Elementor 云端拉取模板与图标,网络不通时即失败。

可能原因
  • 服务器无法访问 Elementor 官方接口(主要是网络与防火墙问题)
  • 连接类型在 Elementor 设置中被限制(仅本地/仅远程)
  • 插件冲突或接口被 WAF 拦截
解决方法
  1. Elementor → 设置 → 高级,确认「连接类型」未被限制为仅本地
  2. 测试服务器是否能访问 my.elementor.com 等官方域名
  3. WAF/防火墙放行 elementor 相关出站与接口请求
  4. 模板库不可用时,可直接导入本地 JSON 模板文件代替
代码 / 命令
# 测试 Elementor 云端连通性
curl -I https://my.elementor.com
curl -I https://assets.elementor.com

Elementor 页面保存后内容丢失或无法更新

点更新后提示保存失败,或历史版本被回滚

保存请求被拦截或超时,也可能是非管理员/多作者同时编辑。

可能原因
  • 保存请求超时(页面元素过多、服务器性能不足)
  • REST/AJAX 请求被 WAF 拦截
  • 同一页面被他人同时编辑,产生版本冲突
  • 缓存插件缓存了编辑器请求
解决方法
  1. 保存前先复制一份页面作为备份(后台 → 页面 → 复制)
  2. 提高 PHP 内存与执行时间,拆分过长页面
  3. WAF 放行 /wp-json/ 与 admin-ajax.php
  4. 确认没有其他人同时编辑同一页面
  5. 查看 Elementor → 工具 → 版本历史,回滚到上一个正常版本

提示:元素特别多的长页面建议拆分为模板 + 页面组合,能显著降低保存失败率。

需要协助处理网站故障或提供维护?


WordPress常见错误速查 - 500/白屏/数据库报错原因与解决方法
WordPress外贸建站服务
WordPress网站维护服务(长期托管)
WordPress网站维护服务(长期托管)
WordPress常见错误速查 - 500/白屏/数据库报错原因与解决方法
免费WordPress外贸建站课程

客服微信 客服微信
客服微信
公众号 公众号
公众号
内容搜索 内容搜索
内容搜索
您好,有什么可以帮您? 请问有什么想了解的吗?
🤖AI客服 7*24小时在线为您服务
尊贵的VIP客户: -

Contact Us

Contact Image