frankenphp v1.2.0 日志默认输出到 stderr,不写文件;前台运行可实时查看,后台需重定向 stdout/stderr(如 nohup 或 docker logs),启用 caddy 访问日志须在 caddyfile 显式配置 { log } 块。

在 macOS 上运行 FrankenPHP v1.2.0 时,终端窗口关闭或进程转入后台后,日志就立刻不可见,而默认配置下它既不写入文件也不自动启用结构化日志,必须手动确认输出流向并选择对应查看方式。
确认日志当前输出位置
FrankenPHP v1.2.0 默认把所有运行时日志(启动信息、HTTP 请求摘要、panic)输出到 stderr,但不会自动写入磁盘文件。先验证你看到的日志是否真的来自当前实例:
执行 frankenphp serve --document-root ./public 并保持终端前台运行 → 观察是否有 INFO Using config file 或 INFO Serving HTTP on 类似行出现。若只有空白或立即退出,说明服务未真正启动,此时终端最后一行就是唯一线索。
【关键前提】不要用 nohup 或 & 后台启动后再回头找日志——stderr 会断开,日志直接丢失。
前台运行时实时看日志
这是最直接、最可靠的方式,适用于调试和开发阶段:
打开 Terminal,进入项目根目录,执行:
frankenphp serve --document-root ./public
此时所有日志(包括 PHP 错误、HTTP 访问记录、Caddy 路由信息)都实时打印在终端里。按 Ctrl+C 可停止服务。
若想高亮错误便于识别,可加管道过滤:
frankenphp serve --document-root ./public 2>&1 | grep -E "(ERROR|PANIC|Warning|Fatal)"
后台运行时捕获日志到文件
macOS 没有 systemd,不能用 journalctl;若需后台运行且保留日志,必须显式重定向 stdout/stderr:
第一步:创建日志目录并确保可写
mkdir -p ~/Library/Logs/frankenphp && chmod 755 ~/Library/Logs/frankenphp
第二步:用 nohup 启动并重定向输出
nohup frankenphp serve --document-root ./public > ~/Library/Logs/frankenphp/access.log 2>&1 &
第三步:查看实时日志流
tail -f ~/Library/Logs/frankenphp/access.log
【注意】nohup 启动后,终端会显示类似 [1] 12345 的进程号,记下它,后续可用 kill 12345 停止服务。
通过 Docker 容器运行时查日志
如果你是用 Docker Desktop for Mac 运行 FrankenPHP(例如官方镜像 frankenphp/frankenphp:1.2.0),日志路径完全不同:
方法一:用 docker logs 实时跟踪
docker logs -f frankenphp-app
方法二:只看最近 100 行再持续追加(避免刷屏)
docker logs -f --tail 100 frankenphp-app
方法三:确认容器名是否正确
docker ps --filter "ancestor=frankenphp:1.2.0" --format "table {{.Names}}\t{{.Status}}"
Docker 镜像默认把 PHP 错误、HTTP 请求、SAPI 启动日志全部导向 stdout/stderr,不要尝试进容器查 /var/log/ 下的文件——那些路径默认不存在或为空。
启用 Caddy 访问日志(需配置文件)
FrankenPHP 基于 Caddy,但 v1.2.0 默认不开启访问日志。要看到 GET / 200、POST /api 500 这类请求记录,必须在 Caddyfile 中显式声明 log 块:
第一步:在项目根目录创建 Caddyfile,内容如下:
{
log
}
localhost {
route {
php {
root ./public
}
}
}
第二步:启动时指定配置文件
frankenphp serve --config ./Caddyfile
此时终端将输出每条 HTTP 请求的简要摘要(方法、路径、状态码、耗时)。如需写入文件,把 log 改为:
log {
output file ~/Library/Logs/frankenphp/caddy_access.log
}
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











