frankenphp build会打包当前目录所有可读文件,不识别.gitignore,必须手动清理.git、tests/等非必要目录,否则导致体积暴涨、启动失败或敏感信息泄露。

frankenphp build 会打包当前目录下所有可读文件
它不识别 .gitignore,也不跳过 tests/ 或 .git/ 目录——只要这些路径存在且可读,就会被静态链接进二进制。后果很直接:体积暴涨(多出几十MB)、启动变慢、甚至因加载了 phpunit 类或泄露 .env 路径导致运行时失败。
必须手动清理,不能靠构建参数跳过
frankenphp build 没有 --exclude-tests 或 --ignore-git 这类开关。清理只能在执行构建命令前完成,推荐用以下组合操作:
GInstall OneClick — 一键安装 GitHub 项目:规划、克隆、安装 Node 依赖、运行开发脚本。适用于想要获取 GitHubNode.js 项目的用户。
- 删掉整个
.git目录:rm -rf .git - 清空测试相关路径:
rm -rf tests/ vendor/bin/ storage/logs/ storage/framework/cache/ - 确认
composer.json中没残留开发依赖(比如phpunit、larastan),再跑一次composer install --no-dev --optimize-autoloader - 如果项目用了 Git 子模块,也要一并
rm -rf .gitmodules和对应子目录
更安全的做法:用干净目录做构建源
直接在原项目根目录操作有风险(比如误删 storage/app/)。建议用临时目录隔离:
- 新建临时目录:
mkdir /tmp/laravel-build && cd /tmp/laravel-build - 用
git archive导出干净代码:git -C /path/to/your/laravel archive --format=tar HEAD | tar -x - 补上生产环境配置:
echo "APP_ENV=prod" > .env && echo "APP_DEBUG=false" >> .env - 安装依赖:
composer install --no-dev --optimize-autoloader - 最后才进这个干净目录执行:
frankenphp build --output myapp --server-name example.com
真正容易被忽略的点是:哪怕只留一个 tests/ExampleTest.php,它里面引用的任何 PHPUnit\Framework\TestCase 都会把整套测试框架拖进二进制——而 frankenphp 启动时根本不会报“找不到 PHPUnit”,只会卡在初始化阶段或报模糊的 segmentation fault。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










