frankenphp离线部署的核心是使用官方静态二进制包,内置php 8.5、caddy及常用扩展,无需系统php或web服务器;下载对应平台安装包,上传至服务器并赋权,配合caddyfile配置即可运行。

FrankenPHP 离线部署的核心是使用其官方提供的**静态二进制安装包**——它已内置 PHP 8.5、Caddy 服务器、常用扩展(如 PDO、iconv、zlib)及运行时依赖,无需系统级 PHP、Web 服务器或 Composer 环境,真正“下载即用”。
一、离线安装包下载方式
所有平台安装包均来自 FrankenPHP 官方 GitHub Releases,不依赖网络仓库或包管理器:
-
Linux(x86_64 / ARM64):下载
frankenphp-linux-x86_64或frankenphp-linux-aarch64,为静态链接二进制,兼容任意发行版(CentOS、Ubuntu、Alpine 等) -
macOS(Intel / Apple Silicon):下载
frankenphp-darwin-amd64或frankenphp-darwin-arm64,签名完整,可绕过 Gatekeeper 限制(首次运行需右键「打开」) -
Windows:下载
frankenphp-windows-amd64.zip,解压后含frankenphp.exe和配套php.dll,无需 Visual C++ 运行库(已静态链接) - 所有版本均附带完整 PHP 扩展列表,可通过
./frankenphp php-cli -m查看;缺失扩展(如pdo_mysql)建议换用对应 Docker 镜像或自定义构建
二、离线环境部署步骤
在无外网、无包管理器、无编译工具的封闭服务器上,按以下顺序操作:
- 将下载好的二进制文件(如
frankenphp-linux-x86_64)上传至目标服务器任意目录(如/opt/frankenphp) - 赋予执行权限:
chmod +x /opt/frankenphp/frankenphp-linux-x86_64 - 准备应用代码:把 PHP 项目(如 Laravel 的
public/及其上级结构)整体复制到服务器,确保public/index.php存在且可读 - 创建最小化
Caddyfile(与项目同级):{ frankenphp } localhost { root * public/ php_server }
注意:root * public/必须以斜杠结尾,路径为相对当前工作目录 - 进入项目根目录,执行:
/opt/frankenphp/frankenphp-linux-x86_64——服务将在http://localhost:80启动(HTTPS 需域名+联网)
三、纯离线运行要点(无网络场景)
若服务器完全断网(无法访问 Let's Encrypt、CDN 或远程日志),需主动禁用自动 HTTPS 和外部依赖:
- 启动时强制 HTTP 模式:
SERVER_NAME=:80 /opt/frankenphp/frankenphp-linux-x86_64 - 在
Caddyfile全局块中关闭 ACME:{ frankenphp servers { https_redirect off } } - 避免使用需联网的功能:Mercure、Vulcain、自动证书续期、HTTP/3(QUIC 依赖 UDP 连通性)
- 日志输出默认到 stdout,如需落盘,请重定向:
./frankenphp > /var/log/frankenphp.log 2>&1
四、验证与调试技巧
离线环境下快速确认是否就绪:
- 检查二进制完整性:
./frankenphp version应输出类似FrankenPHP v1.2.0 (PHP 8.5.0) - 测试 PHP 基础能力:
./frankenphp php-cli -v和./frankenphp php-cli -m | grep pdo - 确认 Web 服务响应:
curl -I http://localhost应返回HTTP/1.1 200 OK - 若遇 500 错误,先检查
public/index.php权限(应为644)、.env中APP_ENV=prod是否生效、vendor/autoload.php是否存在
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











