3.2 PHP 等运行环境管理

一句话回答

运行环境就是「网站的发动机仓」:先选版本建好环境,再装扩展、改配置,最后把网站挂上去。PHP 环境管理最复杂(版本和扩展最多),其它语言(Java/Node/Go/Python/.NET)操作模式都一样:选版本、放代码、启停、看日志。

运行环境是什么

3.1 节说过「先环境后网站」。运行环境 = 语言解释器 + 配置 + 端口,一个容器化的运行单元。你放进去代码,它负责让代码跑起来并对域名暴露。

支持的语言与版本(以官方功能手册为准):

语言 官方支持的大版本
PHP 5.x、7.x、8.x 三个大版本
Java 1.8、11、17、18、21、22
Node.js 12.x、14.x、16.x、18.x
Python 3.10、3.11、3.12、3.13
.NET 9.0、8.0、6.0
Go 可选版本以页面显示为准

版本选择原则:新项目直接选最新稳定版;老项目迁移选原版本,别顺便升级——升级语言版本是独立的大工程,别和「迁移到面板」混在一起做。

给 PHP 多说两句:PHP 5.x 已经非常老旧,只在维护祖传项目时才选;新项目从 8.x 起步;7.x 是「老项目过渡」的选择。常用 CMS 对 PHP 版本有自己的要求,以你所装应用的官方要求为准——比如某个主题或插件明确写了「需要 PHP 7.4」,就照着选。多个运行环境可以共存:你可以同时建一个 PHP 7.4 环境和一个 PHP 8.2 环境,分别给不同网站用,互不影响。这一点对建站公司特别有用:客户 A 的老站用 7.4,客户 B 的新站用 8.2,一台机器全搞定。

PHP 运行环境:创建

入口:网站 → 运行环境 → 创建运行环境,选择 PHP 版本。

扩展可以一并选——这一步选好,省得后面再补。常用场景:

你要做的事 建议勾选的扩展
连 MySQL mysqli / pdo_mysql
缓存 redis
图片处理 gd / imagick
加密解密 mcrypt / sodium
常见框架 bcmath、opcache

不确定就先勾默认:WordPress 这类主流应用需要的扩展,面板有现成模板或文档提示;真缺了扩展,运行时报错再补也来得及(下面讲怎么装)。

本地 PHP 运行环境

如果你已经在服务器上装过 php-fpm,可以选择本地方式创建环境,面板直接接管已有的 php-fpm,不必再起容器。离线环境也有对应方案:从其他 1Panel 服务器拷贝 /opt/1panel/runtime/php/[php_name] 目录和镜像,用 docker compose up 启动后记好映射端口,再创建环境填这个端口。

PHP 运行环境:管理与操作

环境列表里对每个环境可以做这些事:

操作 在哪 干什么
扩展 列表【扩展】按钮 查看已加载扩展,安装/卸载扩展
配置 【更多】→【配置】 查看并修改 php.ini 配置
进程守护 【更多】→【进程守护】 配置常驻进程
启停 列表按钮 停止/启动/重启环境

扩展管理怎么用

点【扩展】可以看到当前环境已加载的扩展列表,勾选安装、取消卸载。一个实用习惯:装完应用跑不起来,先来看扩展——比如 WordPress 提示「imagick 不可用」,来这装 imagick 就行。

官方文档里有一张完整的「扩展 × PHP 版本」支持矩阵(132 个扩展 × PHP 5.5~8.2),常见的 redis、mysqli、gd、imagick、swoole、xdebug 全版本支持,少数老扩展只在低版本有。安装前不确定兼容性就查表,可看《1Panel 官方文档:功能手册》中 PHP 一节的原表。

配置和进程守护

修改配置:改 php.ini 的内存限制、上传大小、超时等参数都在【更多】→【配置】。典型场景:上传大文件报错,把 upload_max_filesize 和 post_max_size 调大。

进程守护:PHP 应用需要额外常驻进程时(比如队列消费、WebSocket 服务),在【更多】→【进程守护】里配置。第五章 5.4 节会讲工具箱里的通用进程守护功能,两者思路一致:进程挂了自动拉起。

其它语言:操作模式都一样

Java、Node.js、Go、Python、.NET 的运行环境管理比 PHP 简单得多,因为不用管扩展。通用操作:

创建运行环境(选版本 + 源码/运行目录)
→ 放代码到运行目录
→ 启动环境
→ 看日志确认跑起来了
→ 创建网站时选这个环境(3.1 节)

各语言的差异点:

语言 差异点
Node.js 管理的是 Node 模块(npm 装的包),列表可查看已装模块、启停、看日志
Java 选版本 + 运行目录,通常是打包好的 jar
Go 创建前确保项目包含可构建/可执行的 Go 程序;编辑启动命令、运行目录或环境变量后,要通过日志确认程序重启成功
Python 选版本 + 运行目录
.NET 用 mcr.microsoft.com/dotnet/aspnet 镜像,需要先把代码编译成 .dll 文件再放到运行目录

一个共同的重点:日志。 每种环境都能在列表点【查看日志】。出了问题(网站 502、起不来),第一反应就是看环境日志,而不是瞎改配置。Go 的官方文档尤其强调:改完启动命令必须通过日志确认重启成功。

运行环境与网站的关系

理解一条主线,排错不迷路:

用户请求 → OpenResty(网站配置)→ 运行环境(容器)→ 你的代码
症状 查哪里
域名打不开 网站状态、OpenResty、域名解析
502 / 504 运行环境日志、环境是否在运行
应用报错(缺扩展、连不上库) 环境的扩展和配置、数据库的用户权限
上传文件失败 php.ini 的 upload_max_filesize 等

运行环境是独立的:一个环境可以被多个网站使用,删除网站不会删环境,删环境前先看有没有网站在用。

常见问答

Q:网站提示 502,但环境显示「运行中」怎么办? A:先点环境的【查看日志】,看应用内部是不是报错了(比如 Node 服务崩在启动阶段、Java 端口被占)。环境「运行中」只表示容器活着,不代表你的应用健康。

Q:WordPress 后台提示「缺 XX 扩展」,在哪装? A:PHP 运行环境列表 →【扩展】→ 勾选安装(本节前面讲过)。装完不需要重启环境,直接刷新网站后台。

Q:上传大附件失败,是面板的限制吗? A:多半是 php.ini 的 upload_max_filesize / post_max_size 太小,去【更多】→【配置】改大。改完按环境生效方式确认,不行就重启环境。

Q:环境删了,网站还在吗? A:网站记录还在,但会没法正常访问(底下的环境没了)。删环境前一定先确认没有网站在用它。

Q:运行环境和应用商店装的 MySQL 是一回事吗? A:不是。运行环境是「语言的解释器」,MySQL 是「数据存储」,两者配合才能跑动态网站。MySQL 等数据库的管理在第四章 4.1 节。

本节要点

  • 运行环境 = 语言解释器 + 配置 + 端口,先建环境再建网站;
  • PHP 支持 5.x/7.x/8.x,创建时随手选好扩展(mysqli、redis、gd、imagick 最常用),缺了再在【扩展】里补;
  • PHP 配置在【更多】→【配置】(如上传大小),常驻进程在【进程守护】;
  • 其它语言版本(Java 8~22、Node 12~18、Python 3.10~3.13、.NET 6~9)操作模式统一:选版本、放代码、启停、看日志;
  • .NET 需先编译成 .dll;Go 改完启动命令要通过日志确认重启成功;
  • 排错主线:域名打不开查网站/OpenResty,502 查环境日志。

PHP 扩展的完整版本支持矩阵,见《1Panel 官方文档:功能手册》中的「PHP」一节;各语言运行环境的细节见同一章的对应小节。

下一步:域名解析与 SSL 证书——让网站从「能打开」变成「安全地打开」。