报错很明确:8000 端口已被占用。先排查是谁占用了,再决定是杀掉还是换端口。
参考资料
报错很明确:8000 端口已被占用。先排查是谁占用了,再决定是杀掉还是换端口。
报错很明确:8000 端口已被占用。先排查是谁占用了,再决定是杀掉还是换端口。
1. 查看谁占用 8000 端口
# 方法一:ss(推荐) ss -lntp | grep :8000 # 方法二:lsof lsof -i :8000 # 方法三:fuser fuser -v 8000/tcp
你大概率会看到是之前没关干净的 octane / swoole 进程,或者宝塔面板里某个服务占用了 8000。
2. 如果是残留的 octane 进程,直接清理
# 查看所有 octane 相关进程 ps aux | grep -E 'octane|swoole' | grep -v grep # 全部杀掉 pkill -f 'octane:start' pkill -f 'swoole' # 再确认 8000 是否释放 ss -lntp | grep :8000
如果还有残留,用 kill -9 <PID> 强杀:
kill -9 $(lsof -t -i:8000)
3. 如果是宝塔或其他服务占用 8000
宝塔默认有些服务会占用 8000(比如某些面板插件、phpMyAdmin 等)。确认后有两个选择:
选择 A:换 Octane 端口(推荐,避免影响其他服务)
php artisan octane:start --server=swoole --host=127.0.0.1 --port=8001 --workers=2 --task-workers=1 --max-requests=500
然后宝塔反向代理指向 127.0.0.1:8001。
选择 B:停掉占用 8000 的服务(如果确认那个服务不需要)
# 先看是什么服务 ss -lntp | grep :8000 # 再根据服务名停掉,比如 systemctl stop xxx
4. 关于那几行 PHP Warning
Cannot load Zend OPcache - it was already loaded Module "zip" is already loaded Module "mbstring" is already loaded
这些是 PHP 配置文件里模块重复加载导致的,不影响运行,但建议清理。通常是 /www/server/php/你的版本/etc/php.ini 或 conf.d 目录下重复写了 extension=xxx。可以去宝塔 → 软件商店 → PHP → 配置修改里检查,把重复的 extension 行删掉。
5. 建议:用宝塔守护进程方式启动
手动 php artisan octane:start 一关终端就停了,生产环境建议用 supervisor 守护:
宝塔 → 软件商店 → 安装「Supervisor 管理器」→ 添加守护进程:
| 项 | 值 |
|---|---|
| 名称 | fresns-octane |
| 运行目录 | /www/wwwroot/www.madama.cn/fresns |
| 启动命令 | php artisan octane:start --server=swoole --host=127.0.0.1 --port=8001 --workers=2 --task-workers=1 --max-requests=500 |
| 进程数量 | 1 |
| 自动重启 | 是 |
然后宝塔网站 → www.madama.cn → 反向代理 → 目标 http://127.0.0.1:8001。
快速操作顺序
# 1. 看谁占 8000 ss -lntp | grep :8000 # 2. 如果是残留 octane,杀掉 pkill -f 'octane:start' # 3. 确认端口释放 ss -lntp | grep :8000 # 4. 用 8001 端口启动(避开冲突) php artisan octane:start --server=swoole --host=127.0.0.1 --port=8001 --workers=2 --task-workers=1 --max-requests=500
先把 ss -lntp | grep :8000 的输出发我,我可以帮你判断具体是哪个服务占用的。
时间:2026-10-02 11:28:14
来源:https://fresns.ciilii.com/
