直接用frankenphp官方二进制+一行命令即可运行laravel,无需docker、不装php、零代码改动;前提是项目满足扩展依赖(如pdo_mysql、mbstring等)、未硬编码$_server、且结构规范(含public/index.php和有效.env)。

直接用 FrankenPHP 官方二进制 + 一行命令就能跑起 Laravel,不需要 Docker、不用装 PHP、不改代码——但前提是你的项目已满足基本依赖,且没硬编码 $_SERVER 或依赖进程生命周期的逻辑。
确认 Laravel 项目结构和扩展依赖
FrankenPHP 自带 PHP 8.5 和常用扩展,但不是全量内置。迁移前必须验证你项目 composer.json 中声明的 ext-* 扩展是否都可用:
- 运行
frankenphp php-cli -m,检查输出里有没有pdo_mysql、mbstring、openssl、json、xml、ctype、fileinfo、tokenizer、bcmath(Laravel 11 默认要求) - 如果缺
redis或gd等可选扩展,Linux 下可临时用install-php-extensions redis gd(仅限 Docker 镜像内有效;本地二进制不支持动态加扩展) - 若发现缺失关键扩展,要么降级到已支持的 Laravel 版本,要么换 Docker 方式(它允许你
RUN install-php-extensions)
用 Caddyfile 启动经典模式(零改动)
FrankenPHP 的“经典模式”就是替代 Nginx + PHP-FPM,所有路由和静态文件托管由一个 Caddyfile 控制,无需改 Laravel 任何代码。
- 在 Laravel 项目根目录新建
Caddyfile,内容如下:
localhost {
root * public/
encode zstd br gzip
php_server { try_files {path} /index.php }
}
- 确保当前目录是 Laravel 根目录(含
artisan、public/、.env) - 执行
frankenphp run(不是frankenphp serve,后者是开发服务器,不走 Caddyfile) - 访问
https://localhost(注意是 HTTPS,默认自动签发本地证书;HTTP 会重定向) - 若报 404,检查
public/是否真有index.php;若报 500,看终端输出的 PHP 错误,大概率是.env缺失或storage/权限不对
绕过 Caddyfile 的极简启动法(适合调试)
不想写配置?FrankenPHP 支持直接指定入口,跳过 Caddyfile 解析,适合快速验证项目能否跑通:
- 执行:
frankenphp run --config '' --root public/ --index index.php - 这行命令等价于:把
public/当 Web 根,直接执行public/index.php,不加载任何 Caddyfile - 它不会处理静态资源(如 CSS/JS),也不会做 URL 重写,只用来确认 Laravel 应用层是否初始化成功
- 如果这步能返回欢迎页或路由响应,说明核心没问题;后续再补 Caddyfile 做完整托管
权限与环境变量常见坑
FrankenPHP 进程以当前用户身份运行,没有 nginx/www-data 用户隔离,所以权限问题更直白:
-
storage/和bootstrap/cache/必须可写:运行chmod -R 755 storage bootstrap/cache -
.env文件必须存在且格式正确;FrankenPHP 不会自动复制.env.example,这点和php artisan serve不同 - 不要依赖
$_SERVER['DOCUMENT_ROOT']或$_SERVER['SCRIPT_FILENAME']—— FrankenPHP 的$_SERVER是模拟生成的,路径值可能不符合 Nginx/FPM 习惯 - 如果你在
.env里写了APP_URL=http://localhost,而实际用的是https://localhost,部分包(如 Sanctum、Passport)会因协议不匹配拒绝颁发 token
最易被忽略的一点:FrankenPHP 的 php_server 指令默认不启用 OpCache,生产需显式加 opcache.enable=1 到 php.ini 或通过 FRANKENPHP_CONFIG 注入,否则每次请求都重编译字节码,性能反不如 FPM。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











