老 PHP 系统搬进群晖别硬跑:Web Station 脚本语言设置建一套专属配置文件

引言

不少公司手里都有一两套年头不短的内网 PHP 系统——报修登记、物料台账、老门户——机器到寿命后想搬到 NAS 上统一养着,最常踩的坑不是装不上,而是跑不稳:默认 PHP 环境的版本、扩展、参数与老系统对不上,页面时灵时不灵。Web Station 的「脚本语言设置」页就是解这个问题的正门:按官方帮助,你可以在这里创建不同的配置文件来自定义多个环境,PHP 侧管理版本、扩展、FPM 与 php.ini,Python 侧还能配 uWSGI 与模块依赖。这篇按「建一套专属配置文件」的动线走一遍。

什么场景用它最值

一是老系统迁移:老 PHP 应用对版本和扩展有硬要求,为其单建配置文件,不动其他站点的环境。二是多站共存:一台 NAS 上几个站点各用各的 PHP 环境,互不牵连。三是性能与调试:高负荷站点调 FPM 参数,排障阶段开错误显示与 Xdebug,各按需切换。

操作步骤

  1. 进入「Web Station > 脚本语言设置 > PHP」,先认清两类配置文件:基于套件的配置文件在安装服务套件后自动创建,可以编辑但不能删除,且只能应用于其相应服务套件;自定义配置文件则由用户创建、编辑和删除。为什么:这个分类决定了操作边界——套件自带的环境是「随套件走」的公共设施,改它要考虑套件本身;老系统迁移这类需要独占环境的需求,一律建自定义配置文件,从根上避免互相踩脚。

  2. 单击「创建」,填写配置文件名称和描述,从 PHP 版本下拉菜单选择 PHP 后端版本。为什么:名称建议直接用系统名加版本(如「报修系统-老环境」),描述写清这套环境给谁用——一年后翻到这里的人(包括你自己)能立刻明白它的服务对象;版本选择以老系统实际验证过的运行环境为准,先查老系统的版本要求再动手。

  3. 在「设置」选项卡配置常规项:启用 PHP 缓存以提升性能(官方注明某些情况下此设置不会产生作用)、启用 Xdebug 用于调试、启用 display_errors 在网页上显示 PHP 错误消息、open_basedir 选择默认值或自定义路径。为什么:这几项各有时机——缓存面向生产性能,Xdebug 与错误显示面向排障阶段,上线环境应关闭错误显示避免把路径信息暴露给访问者;open_basedir 是安全护栏,指示允许 PHP 访问文件的路径,把老系统的可访问范围圈住,即使用户上传目录被塞进恶意脚本也难以越界读文件。

  4. 配置 open_basedir 时注意两条官方口径:路径用冒号(:)分隔,例如 /etc:/tmp:/usr/bin/php;出于安全原因,homes 共享文件夹的路径(如 /volume1/homes)无法添加到 open_basedir。为什么:分隔符写错整条规则失效,是这类配置最典型的哑弹;homes 路径被官方明确排除,方案设计时就不要把需要被 PHP 访问的数据放进个人主目录,改用专门的共享文件夹。

  5. 在「扩展名」选项卡勾选需要的扩展(如 bz2、curl、dba、gd、pgsql、session、sqlite3),单击保存。为什么:老 PHP 系统的兼容性问题一半出在扩展缺失——数据库驱动、图片处理、网络请求各依赖不同扩展;基于套件的配置文件里,必要扩展名的复选框不可用且不可勾选,只能管理非必要扩展,这也是建议老系统走自定义配置文件的又一个理由:扩展完全自己说了算。

  6. 高负荷站点到「FPM」选项卡调整 PHP FastCGI Process Manager:FPM 模式可选动态、静态或因应需求,并可修改最大进程数、初始服务器数、最小备用服务器数、最大备用服务器数;具体含义官方指引参阅 PHP 官方网站。为什么:FPM 决定 PHP 怎么吃进程资源——静态模式进程数固定、响应稳但占用恒定,动态与按需模式随负载伸缩;NAS 同时还承担存储与备份职责,给 Web 系统的进程配额要有意识地留边界,别让一个老系统把整机资源吃满。

  7. 需要改 php.ini 指令时进「核心设置」选项卡:搜索栏输入指令名称定位(如 sendmail_path、sendmail_from),编辑右列的值后保存;改过的值可按「重置已选项目」或「重置所有项目」恢复。为什么:上传大小上限、执行时间这类经典 php.ini 参数就调在这里——逐条定向修改、可重置回滚,比整文件替换稳妥;每次调整建议记录改了哪条、为什么改,作为这套环境的事实文档。

  8. 站点绑定:配置文件建好后,回到 Web Station 的网页服务/门户设置,让目标站点使用这套自定义配置文件。为什么:配置文件只是环境定义,站点不指过来就不生效——「先建环境、再绑站点、最后验证功能」是老系统上 NAS 的标准三段式,每段都可回退。

三条边界先知道

  • 别动套件的公共环境:基于套件的配置文件只服务于对应套件,编辑虽可但删不得——排障时先确认自己改的是自定义配置文件还是套件配置文件,避免影响套件本身。
  • 生产环境关错误显示:display_errors 与 Xdebug 是排障工具,验证通过后随手关掉,别让调试信息常驻对外页面。
  • Python 站同页管理:脚本语言设置页的 Python 选项卡同样支持自定义配置文件(版本、uWSGI 进程/线程/最大请求数、requirements.txt 导入模块)——内网若还有 Python 小工具,环境管理思路与 PHP 一致。

结语

老系统不是不能搬,而是要带着自己的运行环境一起搬。用脚本语言设置页为每套老系统建专属配置文件——版本、扩展、FPM、php.ini 四层按需定义,站点各自绑定、互不牵连,NAS 才真正成为这些「老资产」的稳妥托管地。贵州诚鑫致达科技在帮客户做老系统迁移与内网平台收编时,会先盘点应用的版本与扩展依赖再建环境清单——迁移前多花一小时核对,迁移后少踩一周的坑。