Closed bingcool closed 1 month ago
开启io_uring后,设置hook_flag 包含 SWOOLE_HOOK_FILE 或者 SWOOLE_HOOK_STDIO 都会出现上面报错
错误码是38 ENOSYS,看一下内核版本信息是不是过低
是在windows的系统上的基于alpine linux 3.20.3构建的docker里面跑的swoole,如果不设置 SWOOLE_HOOK_FILE 或者 SWOOLE_HOOK_STDIO,fopen()就不会报错。内核版本:
/home/wwwroot/swoolefy # uname -r
5.10.16.3-microsoft-standard-WSL2`
https://github.com/swoole/swoole-src/issues/5675 看看这个能不能帮你解决问题
windows的wsl可能没法完全模拟linux环境,导致有些功能不支持
参考:
应该是 linux 的 namespace 机制,禁止了 io_uring_queue_init
系统调用,需要修改 docker 的设置:
security_opt:
- seccomp:unconfined
1、php version
2、swoole info
3、 test code (设置'hook_flags' => SWOOLE_HOOK_ALL 必现)
4、fopen error msg