为什么 eastmemphismoms.com 打开后显示 Fatal error?
eastmemphismoms.com 目前打开后显示的是一段 PHP 致命错误(Fatal error),而不是正常页面内容。原因是 WordPress 插件 Skimlinks 的 widget.php 文件调用了 create_function() 函数,而该函数在较新版本的 PHP 中已被移除,属于插件与服务器 PHP 版本不兼容。普通访客无法自行修复,只能等待站长处理。
报错的具体内容
页面输出的错误信息可以拆成几个关键部分:
| 信息 | 含义 |
|---|---|
Uncaught Error: Call to undefined function create_function() |
调用了不存在的函数 create_function() |
/wp-content/plugins/skimlinks/widget.php:102 |
出错位置在 Skimlinks 插件的 widget.php 第 102 行 |
wp-settings.php → wp-config.php → wp-load.php → wp-blog-header.php → index.php |
这是 WordPress 正常的启动加载链路,说明错误发生在 WordPress 初始化阶段 |
也就是说,错误不是来自主题或某篇文章,而是来自一个第三方插件,且在 WordPress 还没完成加载时就已经抛出,所以整站直接中断。
为什么会调用一个不存在的函数
create_function() 是 PHP 早期提供的一个函数,用来动态创建匿名函数。由于实现方式存在安全和性能问题,它在 PHP 7.2 中被标记为废弃,并在 PHP 8.0 中被正式移除。
当服务器把 PHP 版本升级到 8.0 或更高之后,任何仍在调用 create_function() 的代码都会直接报 undefined function 致命错误。Skimlinks 插件的这个版本没有跟上 PHP 的变更,于是整站被拖垮。
普通访客能做什么
基本做不了什么。这是服务器端的代码错误,不是浏览器、缓存或网络问题:
- 刷新页面、换浏览器、清缓存都不会改变结果
- 换设备或换网络同样会看到同一段错误
- 错误发生在服务端渲染阶段,访客端没有任何可操作的入口
站长可以怎么处理
如果你是该站点的管理者,可以从以下方向排查:
- 确认 PHP 版本:在主机控制面板查看当前 PHP 版本。若已升到 8.0 以上,而插件未更新,就会触发此错误。
- 更新或停用 Skimlinks 插件:优先检查是否有兼容 PHP 8 的新版本;若无更新,可暂时停用该插件恢复站点访问。
- 临时降级 PHP:把 PHP 版本切回 7.4 可让旧代码继续运行,但这只是过渡方案,长期仍应升级插件。
- 检查其他插件:同一站点可能还有其他使用
create_function()的旧插件,升级 PHP 前建议逐一确认兼容性。
常见卡点
- 只看到错误、看不到后台:致命错误发生在 WordPress 加载早期,可能连登录页都无法打开,需要通过主机文件管理器或 FTP 手动重命名插件目录来停用。
- 以为是自己网络的问题:这类报错与访客环境无关,换任何设备结果都一样。
- 升级 PHP 后才发现:很多站点是在主机自动升级 PHP 后才暴露此问题,建议升级前先做插件兼容性检查。