必须用php 7.4做中间站,因为它是最后一个会明确报出deprecated警告的版本,能提前暴露mysql_*、create_function()、each()等php 8.0将彻底移除的函数和语法问题,避免直升导致fatal error或白屏。

PHP 5.6 老项目不能直升 PHP 8.0,必须经过 PHP 7.4 过渡,否则大概率白屏、500 或 Fatal error。跳过 7.4 就等于跳过所有 deprecated 提示,相当于蒙眼开车。
为什么必须用 PHP 7.4 做中间站
PHP 8.0 彻底移除了所有被标记为 Deprecated 的语法和函数,而 PHP 7.4 是最后一个会明确报出这些警告的版本——它就是你的“兼容性探雷器”。
-
mysql_*函数在 PHP 7.0 就已废弃,但只报Deprecated;到 PHP 8.0 直接Fatal error: Uncaught Error: Call to undefined function mysql_connect() -
create_function()在 PHP 7.2 废弃、7.4 报警告、8.0 彻底消失 -
each()、eregi()、split()同理:7.4 警告 → 8.0 硬错 - PHP 7.4 支持
??=、箭头函数、类型声明强化,能提前暴露弱类型隐患(比如count(null)在 7.4 不报错,但日志里会写 warning;到 8.0 就是TypeError)
本地先跑通 PHP 7.4 + 全量流程验证
别只改 php.ini,要让整个请求生命周期走一遍:前台页面、后台登录、表单提交、定时任务、API 接口。
- 把
error_reporting设为E_ALL | E_DEPRECATED,并确保display_errors = On(开发环境) - 检查错误日志,重点抓含
Deprecated:开头的行,每一条都是 PHP 8.0 的“死亡预告” - 用
php -l批量扫所有.php文件:find ./ -name "*.php" -exec php -l {} \; 2>&1 | grep "Fatal\|Parse\|deprecated" - 特别注意第三方类库(如老版 ThinkPHP 5.1、DedeCMS 插件、自写数据库封装),它们常藏有
mysql_query()或eval()类调用
升级到 PHP 8.0 前必须手动处理的硬伤点
这些不是 warning,是 PHP 8.0 启动就炸的 TypeError / Fatal error,必须逐个改掉:
-
count(null)→ 改成is_countable($data) ? count($data) : 0(PHP 7.3+ 引入,比is_array()更准) -
mysql_connect()/mysql_query()→ 必须换mysqli或PDO,且不能直接对mysqli_query()返回值调用fetch_assoc(),要先if ($result !== false) -
function foo($a = [])声明了默认空数组,但调用时传了null→ PHP 8.0 会报TypeError,得加类型校验或改默认值为null并在函数内判空 -
date()、strtotime()失效 → 检查php.ini是否设了date.timezone = Asia/Shanghai,没设会警告并返回false
上线前最容易被忽略的三件事
代码改完 ≠ 能跑,PHP SAPI、扩展、opcache 配置错一个,线上就 500。
- CLI 和 Web(如 php-fpm)的 PHP 版本必须一致:
php -v和phpinfo()输出的版本号、Loaded Configuration File路径要完全相同 - 确认必需扩展已启用:
mbstring、openssl、pdo_mysql、json、curl、zip、fileinfo—— 缺一个,ThinkPHP 或 Laravel 可能连 autoload 都失败 -
opcache.enable=1且opcache.validate_timestamps=0(开发期),上线后切回=1;否则首次访问慢或 500,因为 PHP 8.0 opcache 默认更激进,未预热会卡住
最麻烦的从来不是语法改写,而是那些没写进文档的“隐性依赖”:比如某段 JS 通过 document.write() 拼 PHP 变量、某个模板里硬编码了 mysql_result()、或者 cron 脚本里用了 php -f xxx.php 却没指定 CLI 的 php.ini 路径。上线前,把所有非 HTTP 触发路径(命令行、定时任务、WebSocket 后台)全跑一遍。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











