1panel 面板 PHP 版本怎么切换
学完这篇你能得到什么:你会在 1Panel 面板里把某个网站的 PHP 版本从旧版本换到新版本,并且知道切换后哪些东西需要重新配,避免换完站点直接 500。
第一步:先确认服务器上装了哪几个 PHP 版本
这一步要确认的是「可选项」有哪些——1Panel 里每个 PHP 版本都是独立的安装实例,没装的版本在网站里根本选不到。结果就是你能清楚知道自己能在哪几个版本之间切。
打开 1Panel 面板(示例以 v1.10 及以上版本为准),从左侧菜单进入 应用商店 → 运行环境,在标签页里选 PHP。页面上会列出所有 PHP 运行环境卡片,比如 PHP 7.4、PHP 8.0、PHP 8.1、PHP 8.2、PHP 8.3,每张卡片上会显示「已安装」或「安装」按钮。
如果目标版本显示的是「安装」,说明还没装。点击卡片右下角的 安装 按钮,弹出窗口里保持默认配置即可(端口不用改),点 确认,等进度条走完、状态变成「已启动」再进入下一步。
注意:PHP 在 1Panel 里是 Docker 容器,装一个新版本会占用几百 MB 磁盘并常驻内存,小内存服务器(1G 以下)不建议同时装三四个版本。
第二步:在网站配置里把 PHP 版本换掉
这一步要做的就是把某个网站指向另一个 PHP 实例,做完网站就会用新版本解析 PHP 文件。
从左侧菜单进入 网站 → 网站,在列表里找到目标站点,点击站点名称进入详情页(也可以点操作列的 配置 按钮)。在详情页顶部的标签里选 运行环境。
在「运行环境」区域有一个下拉框,里面列出的是第一步里已经安装的所有 PHP 版本。选中你要换到的版本,例如从 PHP 7.4 换成 PHP 8.2,然后点右下角的 保存。保存成功后,1Panel 会自动重写该网站的 Nginx 配置并把 fastcgi 指向新的 PHP 容器,一般几秒内生效。
如果你的网站详情页里压根没有「运行环境」这一项,那说明这个站点的类型不是 PHP 网站(比如是纯静态站、反向代理站或 Node 项目),这种情况下没有 PHP 版本可切。
注意:切换是「站点级」的,不是全局的。同一个服务器上 A 站可以跑 PHP 7.4、B 站跑 PHP 8.2,互不影响——这也是很多人用 1Panel 的原因。
第三步:验证版本真的生效了
这一步要拿实际运行结果确认,别只看面板显示。
在网站根目录(默认在 /opt/1panel/apps/openresty/openresty/www/sites/你的域名/index,也可以在网站详情页的 网站目录 里看到真实路径)新建一个 info.php,内容写:
<?php phpinfo();
浏览器访问 http://你的域名/info.php,页面最上方第一块就是 PHP Version,确认数字和你刚才选的版本一致。
验证完立刻删掉这个文件,它会把服务器路径、扩展、环境变量全部暴露出去。
注意:如果访问后变成下载文件,说明 Nginx 没把请求转给 PHP,多半是新版本容器没起来。去 应用商店 → 运行环境 → PHP 里看一下对应版本的状态是不是「已启动」,没启动就点 启动。
第四步:切换后必须重新处理的几件事
新 PHP 版本是一个全新的容器,旧版本的配置不会跟过来,下面这几项要单独补:
- PHP 扩展:进 应用商店 → 运行环境 → PHP,点新版本卡片的 参数 或 已安装扩展,把项目需要的
redis、imagick、fileinfo、mysqli等重新勾选安装。 - php.ini 参数:
upload_max_filesize、post_max_size、memory_limit、max_execution_time这些都是每个版本独立设置的,切换后要按旧版本的值重新调一遍。 - 伪静态规则:在网站详情页的 伪静态 里确认规则还在(WordPress、ThinkPHP 等模板),跨大版本升级时框架的伪静态可能不兼容。
- 数据库连接地址:如果配置文件里写的是
localhost,部分版本会走 socket,建议改成127.0.0.1更稳。 - 代码兼容性:从 PHP 7.x 换到 8.x 前,先本地或测试站跑一遍,
each()、create_function()这类函数在 8.0 已经移除。
注意:换完版本如果站点报 502,先看容器日志:应用商店 → 运行环境 → PHP → 对应版本 → 日志,再决定是回滚版本还是改代码。回滚方法就是回到第二步,把下拉框选回原来的版本再保存。
小结
- PHP 版本要先在 应用商店 → 运行环境 → PHP 里安装,才有得选。
- 切换入口在 网站 → 网站 → 站点详情 → 运行环境,改完点保存即时生效。
- 必须用
info.php实测确认,验证完马上删除。 - 新版本是全新容器,扩展、php.ini 参数、伪静态都要重新配。
- 切换是站点级的,同一台机器不同网站可以用不同 PHP 版本。
- 出问题优先看 PHP 容器日志,回滚就是把下拉框选回旧版本。
原文链接:https://www.gj0.com/thread-1197.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。