<p>是的,Workerman 5.2.3 必须开启 PHP 的 socket 扩展,因其底层依赖 socket_* 系列函数实现网络通信;未启用会报“Call to undefined function socket_create()”错误,需通过 php -m | grep sockets 确认启用。</p>

是的,Workerman 5.2.3 必须开启 PHP 的 socket 扩展。
Workerman 是一个纯 PHP 编写的异步网络通信框架,底层依赖 socket_* 系列函数(如 socket_create、socket_bind、socket_listen、socket_accept 等)来实现 TCP/UDP 服务监听、连接管理、IO 多路复用等核心功能。如果未启用 socket 扩展,启动时会直接报错,例如:
PHP Fatal error: Uncaught Error: Call to undefined function Workerman\socket_create()
如何确认 socket 扩展已启用
运行以下命令检查:
php -m | grep socket # 或查看详细信息 php -i | grep "socket"
输出中应包含 socket(注意不是 sockets,PHP 8.0+ 默认模块名为 sockets,但 Workerman 兼容两者;5.2.3 支持 socket 和 sockets,推荐使用 sockets 扩展)。
常见环境开启方式
-
Linux(源码编译 PHP):配置时加上
--enable-sockets -
Linux(apt/yum 安装 PHP):
# Ubuntu/Debian sudo apt install php-sockets # CentOS/RHEL sudo yum install php-sockets
-
Windows(WAMP/XAMPP):
编辑php.ini,取消注释:extension=sockets
(注意:旧版可能写为
extension=php_sockets.dll,新版统一为sockets)
补充说明
- 不需要开启
pcntl扩展也能运行(但无法使用多进程模式,仅限单进程调试); -
posix扩展非必需,但若需信号处理(如平滑重启)、用户切换等功能,建议启用; -
event或libevent扩展属于可选高性能驱动,非 socket 替代品——socket 扩展仍是基础依赖。
确保 php -m | grep sockets 有输出,再运行 php start.php start 即可正常启动 Workerman 服务。

















