参考资料

  1. 端口还是被占用,但 PID 变了(从 244xx 变成了 261xx)。
  2. Nginx 无法连接到 Octane 监听的端口
  3. Fresns 社区中用于解决 502 Bad Gateway 错误
  4. Fresns 基于 Swoole 的运行状态输出
  5. Fresns 的请求头采用 X-Fresns-* 命名格式,主要用于身份认证和客户端信息传递
  6. Laravel Octane 与 Swoole 扩展的版本不兼容
  7. 按 2 核 2G 的标准,把你的 config/octane.php 调整好
  8. 说明日志系统在记录 Guzzle 废弃警告时崩溃了,掩盖了真正的问题

Swoole 6.2.2 扩展正在为 PHP 8.3 编译的过程

这份日志显示的是 Swoole 6.2.2 扩展正在为 PHP 8.3 编译的过程,目前看起来编译在正常推进,没有出现错误。下面帮你解读一下关键信息:

编译环境

  • PHP 版本:8.3(/www/server/php/83/include/php,看起来是宝塔面板的路径)

  • Swoole 版本:6.2.2(源码在 /root/swoole-6.2.2)

  • 编译器:g++,使用 -std=c++14

  • PHP 扩展模式:-DENABLE_PHP_SWOOLE -DZEND_COMPILE_DL_EXT=1,即编译为 PHP 动态扩展

日志在做什么

这是 make 编译阶段,正在逐个编译 Swoole 的 C++ 源文件。日志中每条命令的模式是:

  1. /bin/sh libtool --mode=compile g++ ... — 通过 libtool 调用 g++ 编译单个 .cc 文件

  2. 紧接着 g++ ... -fPIC -DPIC -o .libs/xxx.o — 生成位置无关代码(PIC),用于最终链接成共享库

已经编译的模块包括:

模块文件
serverworker, reactor_thread, static_handler, reactor_process, thread, base
wrapperevent, timer, http
osfile, timer, unix_socket, signal, sendfile, pipe, wait, process_pool, msg_queue, async_thread, base
corebuffer, base64, misc, timer, string, heap, log, error, crc32, channel, base
coroutinesystem, file, file_lock, iouring, uring_socket, thread_context, socket, context, channel, base, hook
reactorkqueue, poll, base, epoll
networkstream(当前正在编译)

需要注意的点

  1. 日志被截断了:最后一行是 network/stream.cc 的编译,还没结束。你需要等它跑完,看最后是否出现 Error 或 warning 导致的失败。

  2. 如果要判断是否成功,编译完成后应该会看到:

    • 链接阶段生成 modules/swoole.so

    • 最后有 Build complete 或类似的成功提示

    • 若失败,会出现 make: *** [xxx] Error 1

  3. 编译时间较长属正常,Swoole 有大量 C++ 源文件,逐个编译会花几分钟到十几分钟。

  4. 潜在风险:

    • PHP 8.3 与 Swoole 6.2.2 的兼容性——Swoole 6.x 支持 PHP 8.x,但建议确认你用的 Swoole 版本明确支持 PHP 8.3。

    • 如果中途报错,常见原因是 PHP 头文件路径不对、缺少依赖(如 libssl、libcurl)或权限问题。

如果你把日志的最后几十行(尤其是出现 Error、warning 或结束提示的部分)发出来,我可以帮你判断这次编译到底成功没有,以及是否有需要处理的问题。

作者:王壹杰
时间:2026-10-02 09:46:06
来源:https://fresns.ciilii.com/