选错PHP版本会导致网站白屏或500错误,老项目如WordPress多需7.4/8.0,新框架如Laravel10需≥8.1;安装时须手动取消默认最新版、勾选opcache/fileinfo等关键扩展,并确认多版本共存与扩展重装。

宝塔面板里装PHP,选错版本会直接导致网站打不开
PHP版本不是越高越好,WordPress、Typecho、Discuz等老项目普遍卡在7.4或8.0,强行装8.2可能报Deprecated: Function get_magic_quotes_gpc() is deprecated这类致命警告,页面白屏。宝塔的“一键安装”本质是调用编译脚本或预编译包,但默认勾选的往往是最新版——你得手动取消。
- 装之前先查程序文档:比如 Laravel 10 要求
PHP >= 8.1,而 ThinkPHP 5.0 只支持到7.4 - 生产环境别碰
8.3(宝塔目前仅测试版支持),稳定选7.4或8.0 - 多个站点混用不同PHP版本?必须开启“PHP多版本共存”,否则切换全局版本会连带崩掉其他站
从软件商店安装PHP,这些配置项不能跳过检查
宝塔软件商店点“安装”后弹出的配置窗口,看着简单,但编译参数和扩展勾选直接影响后续能不能跑通 Composer、PDO、Redis 等关键组件。
-
opcache建议必选——不勾它,ThinkPHP/Laravel 启动慢一倍以上 -
fileinfo必选,否则 Laravel 的Storage::put()上传文件会报Call to undefined function mime_content_type() - 如果要用
imagick处理图片,得提前在服务器装好 ImageMagick 库,否则PHP安装时会跳过该扩展且不报错 - 别手快全选“安装所有扩展”,
snmp、pspell这类冷门扩展可能因系统缺依赖而中断整个安装流程
安装完PHP,php -v 显示正常但网站500?重点查这三处
宝塔界面显示“运行中”,不代表 PHP-FPM 真的在为你的站点服务。常见故障不在PHP本身,而在连接链路断在中间。
- 检查站点设置里的“PHP版本”是否真被设成刚装的那个——有时安装完默认没自动绑定,仍用着旧版或
纯静态 - 看
/www/wwwlogs/你的站点_error.log,真实错误往往藏在这里,比如Primary script unknown是根目录没设对,Permission denied是www用户没权限读index.php - 执行
ps aux | grep php-fpm,确认对应版本的进程确实在跑;若只看到master进程没worker,大概率是www.conf里listen.owner和宝塔用户不一致
升级PHP版本后,原有扩展全没了?不是Bug,是设计如此
宝塔每个PHP版本的扩展是独立编译的,7.4 装过的 redis 不会自动带到 8.0。这不是遗漏,是避免扩展ABI不兼容导致段错误。
立即学习“PHP免费学习笔记(深入)”;
- 切版本前,记下当前已启用的扩展名(进PHP设置页看“已安装扩展”列表)
- 切到新版本PHP管理页,重新勾选并安装相同扩展——注意
memcached和memcache是两个不同扩展,别搞混 - 若某扩展在新版本里找不到(如
mcrypt在7.2+已移除),就得改代码,用openssl_encrypt替代 - Composer项目要同步执行
composer update --ignore-platform-reqs再重装依赖,否则phpunit之类可能因平台约束失败
最麻烦的其实是 .user.ini 里写的 extension=xxx.so,这种硬加载在新版PHP里会被忽略,必须进宝塔PHP设置里图形化开关。











