低配置服务器可高效运行FrankenPHP,关键在于精简PHP扩展、用systemd限制资源、Caddy反代静态文件、关闭日志与调试。需启用curl/mbstring/json/xml/pdo扩展,禁用gd/opcache/redis等,设MemoryMax=512M、CPUQuota=80%,Caddy托管静态资源并关闭冗余日志。

低配置服务器(如1核1GB内存的VPS)完全可以跑好FrankenPHP,关键不在堆硬件,而在精简配置、关闭冗余服务、合理分配资源。
精简PHP运行时与扩展
FrankenPHP基于SAPI直连PHP,不需要传统FPM或Apache,但默认PHP编译可能带大量无用扩展。安装前先确认仅启用必需扩展:
- 必启:curl、mbstring、json、xml、pdo_sqlite(如用SQLite)或 pdo_mysql(如用MySQL)
- 禁用:gd(除非需图像处理)、opcache(FrankenPHP自带JIT优化,开opcache反而可能冲突)、redis、memcached等非核心扩展
- 编译安装PHP时加参数:--disable-all --enable-cli --enable-mbstring --enable-json --with-curl,避免自动启用不必要模块
用systemd托管FrankenPHP并限制内存
防止PHP Worker意外吃光内存导致OOM Killer杀进程,必须设内存上限:
- 创建 /etc/systemd/system/frankenphp.service,在
[Service]段加入: - MemoryMax=512M
- CPUQuota=80%(防单核占满)
- Restart=on-failure + RestartSec=5
- 启动后执行
sudo systemctl daemon-reload && sudo systemctl enable --now frankenphp
静态资源交由Caddy反代,释放PHP压力
FrankenPHP专注处理PHP请求,所有CSS/JS/图片等静态文件应由轻量Caddy直接响应:
立即学习“PHP免费学习笔记(深入)”;
- Caddy配置示例(
/etc/caddy/Caddyfile): - example.com {
- root * /var/www/html
- file_server
- php_fastcgi 127.0.0.1:8080 {
- transport http
- }
- }
- FrankenPHP监听
127.0.0.1:8080(不暴露公网),只响应.php路径,其余全由Caddy缓存并返回
关闭日志与调试功能
开发期日志有用,生产环境会持续写盘并拖慢响应:
- FrankenPHP启动命令中去掉
--debug和--verbose - 在
frankenphp.yaml中设:log_level: error(不记录info/warn) - 禁用PHP错误显示:
display_errors = Off,log_errors = On,但日志路径指向/dev/null或轮转小容量文件 - Caddy访问日志也建议关闭:log { → 删除整段,或仅保留错误日志



















