hyperf 默认监听9501端口是因其避开80、8080、3000等常用端口,属官方约定的“开箱即用”配置;端口占用时可用netstat或lsof查pid并kill释放,改端口需同步更新server.php、nginx proxy_pass及docker映射。

Hyperf 启动后默认监听 9501 端口。
为什么是 9501,而不是其他常见端口?
这个端口是 Swoole HTTP server 的默认配置值,写死在 config/autoload/server.php 的 servers 配置里:
['name' => 'http', 'type' => ServerInterface::SERVER_HTTP, 'host' => '0.0.0.0', 'port' => 9501, ...]
它避开 80(需 root)、8080(常被代理或测试占)、3000(Node.js 常用),属于 Hyperf 官方约定的“开箱即用”端口。
端口被占用时怎么快速确认和释放?
运行以下命令查进程:
-
netstat -anp | grep :9501(Linux/macOS) -
lsof -i :9501(macOS) -
netstat -ano | findstr :9501(Windows WSL 或 PowerShell)
拿到 PID 后直接 kill:
kill -9 <pid></pid>- Windows 下用
taskkill /F /PID <pid></pid>
注意:别误杀其他服务,比如另一个 Hyperf 实例或 Swoole 开发服务器。
改端口只需改一处配置,但要注意两个地方
修改 config/autoload/server.php 中对应 server 的 port 值即可,例如改成 8288:
'port' => 8288,
但如果你用了 Nginx 反代或 Docker,还得同步改:
- Nginx 的
proxy_pass http://127.0.0.1:9501→ 改成:8288 - Docker
ports映射(如-p 9501:9501)→ 改成-p 8288:8288
否则服务起来了,但外部访问不到。
真正容易被忽略的是:改完端口后,hyperf/watcher 热重载仍会尝试访问旧端口做健康检查(如果配置了 health_check),此时需要清空 watcher 缓存或重启 watcher 进程。











