PHP版本过期本质是安全与兼容双失效,即官方停止维护、不再提供安全补丁,且新版CMS/框架拒绝加载;宝塔中升级需手动绑定网站至新PHP版本并启用必要扩展,否则仍报错。

PHP版本过期的本质是安全与兼容双失效
宝塔面板里显示“PHP已过期”,不是提示你该换皮肤了,而是系统在告诉你:当前PHP版本已停止官方维护,不再接收安全补丁,且部分CMS或框架(如WordPress 6.7+、Laravel 11)已明确拒绝加载。常见现象包括后台报Deprecated: Function get_magic_quotes_gpc() is deprecated、安装插件时提示“PHP version not supported”,甚至首页直接500错误。
关键判断依据是PHP官网的支持周期表——截至2026年3月,PHP 7.4已EOL(结束生命周期),8.0仅剩安全支持至2026年11月,而PHP 8.1/8.2才是当前推荐的稳定主力版本。
在宝塔中升级PHP:三步走,但第一步最常被跳过
很多人点开软件商店→找到PHP→点安装→等完成→刷新网站,结果还是报错。问题往往出在“没确认旧版本是否真被停用”。宝塔允许共存多个PHP版本,但**网站绑定关系不会自动迁移**。
- 先去
网站 → 设置 → PHP版本,确认下拉菜单里选中的确实是刚装好的新版(如PHP 8.2),而不是仍挂着PHP 7.4 - 再进对应PHP管理页(如
PHP 8.2管理),到安装扩展页勾上mbstring、curl、pdo_mysql、openssl——缺任何一个都可能让CMS卡在安装页 - 最后别忘了点击
重载配置(不是重启PHP服务),否则Nginx/Apache仍按旧fastcgi参数转发请求
升级后白屏或报错?先查error_log再动手
PHP 8.0+默认禁用动态属性、严格校验json_decode()返回类型、移除mysql_*函数。CMS没报具体哪行错,就说明错误日志没打开,或者被display_errors = Off挡住了。
立即学习“PHP免费学习笔记(深入)”;
实操建议:
- 进
PHP 8.2设置 → 配置修改,把error_reporting改成E_ALL,log_errors设为On,error_log路径保持默认(通常是/www/wwwlogs/php_errors.log) - 访问出问题的页面,立刻去日志文件尾部找最新条目,典型如:
PHP Fatal error: Uncaught Error: Call to undefined function mysql_connect() - 若看到
Deprecated类警告但没中断,可临时加error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE过渡,但别长期留着
插件/自定义脚本崩了?不是PHP的问题,是调用方式变了
宝塔自身有些老插件(比如早期的“宝塔一键部署”或手动添加的crontab定时任务)硬编码了/usr/bin/php路径或调用php-cgi,而新版PHP实际二进制在/www/server/php/82/bin/php。这类问题不会报PHP过期,但会静默失败。
排查重点:
- 检查计划任务里的Shell脚本,把开头的
php /path/to/script.php全替成/www/server/php/82/bin/php /path/to/script.php - 进
数据库 → 管理 → phpMyAdmin设置,确认其PHP运行环境也指向新版(部分用户反馈phpMyAdmin在PHP 8.2下需额外启用zip扩展) - 如果用了
file_get_contents("php://input")类写法,注意PHP 8.1+对流上下文更敏感,建议改用file_get_contents("php://stdin")并加stream_set_blocking(STDIN, false)
最麻烦的其实是那些没源码的商业插件——它们可能只编译适配到PHP 7.4。这时候不是PHP过期,是你得联系作者要新版,或者换掉它。别硬扛。



















