参考资料

  1. php --ri swoole 的输出可以看到
  2. 说明日志系统在记录 Guzzle 废弃警告时崩溃了,掩盖了真正的问题
  3. Laravel Octane 与 Swoole 扩展的版本不兼容
  4. Fresns 社区中用于解决 502 Bad Gateway 错误
  5. Trying to access array offset on null 是 PHP 8.0+ 的警告
  6. 网站引擎 API 地址配置有问题
  7. 端口还是被占用,但 PID 变了(从 244xx 变成了 261xx)。
  8. 报错很明确:8000 端口已被占用。先排查是谁占用了,再决定是杀掉还是换端口。

占用 8000 的正是你之前启动的 octane 进程

占用 8000 的正是你之前启动的 octane 进程

输出很清楚:8000 端口被 7 个 php 进程占用(PID 24486、24487、24489、24490、24491、24492、24493),这就是你上一次运行 php artisan octane:start 后没关掉的 octane master + worker 进程。

你之前用的命令是 --workers=2 --task-workers=1,理论上应该是 1 master + 2 worker + 1 task worker = 4 个左右,但这里有 7 个,说明你之前可能启动过多次,堆积了多个 octane 实例。

1. 一次性清掉所有 octane 进程

# 先看看这些进程的完整命令,确认都是 octane
ps -fp 24486,24487,24489,24490,24491,24492,24493

# 全部杀掉(按命令名匹配最干净)
pkill -f 'octane:start'
pkill -f 'swoole'

# 如果还有残留,按端口强杀
kill -9 $(lsof -t -i:8000) 2>/dev/null

# 确认端口已释放
ss -lntp | grep :8000

ss -lntp | grep :8000 如果没有输出,说明端口已释放。

2. 确认没有残留后,再启动

cd /www/wwwroot/www.madama.cn/fresns
php artisan octane:start --server=swoole --host=127.0.0.1 --port=8000 --workers=2 --task-workers=1 --max-requests=500

3. 关于那个 404

你贴的 www.madama.cn/fresns# 返回 404,是因为:

  • /fresns 是服务器上的目录路径,不是网站路由;

  • www.madama.cn 这个域名下,Fresns 应该配置在根目录或某个子路径,而不是 /fresns。

正确访问方式取决于宝塔里网站的根目录设置:

  • 如果宝塔网站根目录直接指向 fresns/public,那访问 https://www.madama.cn 即可;

  • 如果是子目录部署,需要确认路由前缀。

这个和 octane 端口冲突是两回事,先把 octane 跑起来,再看网站访问。

4. 防止再次堆积:用 supervisor 守护

手动 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=8000 --workers=2 --task-workers=1 --max-requests=500
进程数量1
自动重启是

supervisor 会自动管理进程生命周期,不会再出现手动启动堆积的情况。

快速操作

# 1. 杀掉所有 octane
pkill -f 'octane:start'

# 2. 确认端口释放
ss -lntp | grep :8000

# 3. 重新启动
cd /www/wwwroot/www.madama.cn/fresns
php artisan octane:start --server=swoole --host=127.0.0.1 --port=8000 --workers=2 --task-workers=1 --max-requests=500

先执行第 1、2 步,把 ss -lntp | grep :8000 的结果发我,确认干净后再启动。

作者:王壹杰
时间:2026-10-02 11:29:14
来源:https://fresns.ciilii.com/