常见问题

同时安装了swowswoole

Coroutine module is incompatible with some extensions that setup exit user opcode handler in Unknown on line 0

不能与不兼容的扩展同时加载,需要在 php.ini 中移除存在冲突的扩展。

使用SDB调试时提示 Please re-run your program with “-e” option

# 进入id为3的协程进行跟踪调试
> attach 3
Error: Please re-run your program with "-e" option in path/to/vendor/swow/swow/lib/swow-library/src/Debug/Debugger/Debugger.php:0

需要在运行的时候加上-e参数,如php -e your_file.php

原因:开启-e参数后,PHP会在执行每个OPCode时尝试调用扩展注册的回调函数,因此平时开启-e选项会影响程序性能,我们需要在调试的时候手动开启该选项,否则单步调试跟踪和断点功能将无法使用。

启用Swow后PHP提示PHP Warning: PHP Startup: Swow pdo_pgsql hook not enabled

如果你的Swow编译时开启了pgsql支持,在启动时环境又没有pgsql:

  • 没有开启pdo扩展,提示: “pdo extension not enabled”
  • 没有找到支持的libpq依赖库,提示: “libpq.so/libpq.5.dylib/lipq.dll not found” “libpq is too old”

那么启动时会提示这个,这时pdo_pgsql的hook不工作。

如果你需要支持:

如果你不需要这个支持,可以配置ini:

swow.hook_pdo_pgsql = Off;