You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下XAMPP v3.3.0运行PHP Socket代码报socket_create未定义错误

问题解决步骤

1. 确认CLI模式加载的php.ini路径

在命令行执行以下命令:
php --ini
输出的Loaded Configuration File对应的路径才是命令行运行PHP时实际读取的配置文件,你之前修改的大概率是XAMPP为Apache准备的php.ini(一般在xampp/apache/bin目录下),和CLI用的配置文件不是同一个。

2. 修改对应php.ini配置

打开上一步查到的php.ini文件,做如下修改:

  • 取消sockets扩展的注释:将;extension=sockets改为extension=sockets(PHP7+版本优先用这个写法,不需要加php_前缀和.dll后缀)
  • 如果你用的是PHP5版本,额外添加一行extension=php_sockets.dll
    修改后无需重启Apache,CLI模式每次执行命令都会重新读取配置,直接测试即可。

3. 验证扩展是否加载成功

执行以下命令验证:
php -m | findstr sockets
如果输出sockets就代表扩展加载成功,再执行你的Socket代码就不会报函数未定义的错误了。

4. 异常排查

如果还是加载失败,检查以下配置:

  • 确认php.ini里的extension_dir配置指向的目录存在php_sockets.dll文件
  • 确认php_sockets.dll和你当前PHP的版本、架构(x86/x64)、线程安全模式(TS/NTS)完全匹配,不匹配的扩展文件无法被加载
  • 执行php -r "var_dump(function_exists('socket_create'));"直接验证函数是否存在,返回bool(true)就代表正常。

额外提示:你提供的Socket代码存在逻辑错误,socket_write调用时传入的是服务端监听套接字$socket,应该传入接受客户端连接后返回的$socket_accept,否则无法正常向客户端返回数据。

内容的提问来源于stack exchange,提问作者Kavishka Madhushan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:18:00