Symfony CLI未安装或未加入PATH导致command not found;端口8000被占用且CLI不自动切换,需手动查杀或指定新端口;日志默认过滤INFO级别,需加--level=info查看完整输出。

symfony server:start 启动失败,提示 command not found
根本原因:Symphony CLI 工具没装,或者没进 $PATH。它不是 Composer 包,不能靠 composer require 装;也不是系统自带命令。
- 去 symfony.com/download 下对应系统的二进制文件(Linux/macOS 是
symfony单一可执行文件,Windows 是symfony.exe) - 下载后加执行权限:
chmod +x symfony,再挪到/usr/local/bin/或你 shell 的$PATH里 - 验证是否生效:
symfony --version能输出版本号才算成功 - 别用
sudo apt install symfony-cli这类包管理器安装——Ubuntu/Debian 官方源里的版本太老,常报Failed to start web server
symfony server:start 报错 Address already in use
默认端口 8000 被占了,但 Symfony CLI 不会自动换端口,也不会提示你该换哪个——它就卡住不动。
- 查谁占了端口:
lsof -i :8000(macOS/Linux)或netstat -ano | findstr :8000(Windows) - 快速释放(如果确定是旧进程):
kill $(lsof -t -i :8000) - 换端口启动:
symfony server:start --port=8001,支持任意未被占用的端口 - 注意:改端口后,
symfony server:log和symfony server:stop仍能识别当前运行实例,不用额外指定端口
本地开发时用 symfony server:start 还是 php -S
symfony server:start 不只是个 PHP 内置服务器包装器,它自带 HTTPS、HTTP/2、.env 支持、日志聚合和热重载感知——但代价是多一个后台进程、偶尔内存泄漏。
- 需要 HTTPS 本地测试(比如 OAuth 回调、Service Worker)?必须用
symfony server:start,php -S不支持 - 项目里用了
.env.local或symfony.lock?CLI 会自动加载,php -S不会 - 跑完就关、不介意手动刷新?
php -S localhost:8000 -t public更轻量,也更可控 - 性能上没明显差别;但 CLI 在 Windows 上偶发监听失效(尤其 WSL 混用时),这时候退回到
php -S反而更稳
symfony server:log 不输出任何内容
不是没日志,是默认只显示错误和警告,INFO 级别被过滤了——而 Symfony 默认的 dev 环境日志大量是 INFO。
- 看完整日志流:
symfony server:log --level=info - 想实时盯某类请求?
symfony server:log --format=json | jq '.request.uri'(需装jq) - 日志实际存在
~/.symfony/var/log/下,按项目哈希分目录,但直接翻文件不如用命令查得快 - 注意:
symfony server:log必须在 server 正在运行时执行,否则报No web server is running










