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

已开启PHP.ini中sockets扩展仍遇OrientDB连接Socket异常求助

解决PHP连接OrientDB时的SocketException错误

你遇到的错误信息:

Fatal error: Uncaught PhpOrient\Exceptions\SocketException: Error 0 : The operation completed successfully in C:\xampp\htdocs\tugas\PhpOrient\src\PhpOrient\Protocols\Binary\OrientSocket.php:91
Stack trace:
#0 C:\xampp\htdocs\tugas\PhpOrient\src\PhpOrient\Protocols\Binary\SocketTransport.php(146): PhpOrient\Protocols\Binary\OrientSocket->connect()
#1 C:\xampp\htdocs\tugas\PhpOrient\src\PhpOrient\Protocols\Binary\Abstracts\Operation.php(76): PhpOrient\Protocols\Binary\SocketTransport->getSocket()
#2 C:\xampp\htdocs\tugas\PhpOrient\src\PhpOrient\Protocols\Binary\SocketTransport.php(223): PhpOrient\Protocols\Binary\Abstracts\Operation->__construct(Object(PhpOrient\Protocols\Binary\SocketTransport))
#3 C:\xampp\htdocs\tugas\PhpOrient\src\PhpOrient\Protocols\Binary\SocketTransport.php(161): PhpOrient\Protocols\Binary\SocketTransport->operationFactory('PhpOrient\Proto...', Array)
#4 C:\xampp\htdocs\tugas\PhpOrient\src\PhpOrient\PhpOrient.php(247): PhpOrient\Protocols\Binary\SocketTransport->execute('connect', Array)
#5 C:\xampp\htdocs\tugas\coba.php(8): PhpOrient\PhpOrient->connect()
#6 {main} thrown in C:\xampp\htdocs\tugas\PhpOrient\src\PhpOrient\Protocols\Binary\OrientSocket.php on line 91

你的PHP代码:

<?php
require "PhpOrient/vendor/autoload.php";
use PhpOrient\PhpOrient;

$client = new PhpOrient( 'localhost', 2424 );
$client->username = 'root';
$client->password = '0r13ntDB';
$client->connect();
?>

已开启sockets扩展的php.ini片段:

; The MIBS data available in the PHP distribution must be installed.
; See https://www.php.net/manual/en/snmp.installation.php
;extension=snmp

;extension=soap
extension=sockets
;extension=sodium
;extension=sqlite3
;extension=tidy
extension=xsl

针对这个矛盾的错误提示(错误码0却提示操作成功),按以下步骤排查:

  • 确认OrientDB服务状态与端口监听
    打开任务管理器(Windows)或用ps命令(Linux)检查OrientDB进程是否在运行。再用telnet localhost 2424或Windows的Test-NetConnection localhost -Port 2424测试端口是否能连通,确保服务确实监听了2424端口。

  • 替换localhost为127.0.0.1
    部分环境下localhost解析可能异常,修改代码中的连接地址为IP尝试:

    $client = new PhpOrient( '127.0.0.1', 2424 );
    
  • 检查OrientDB的二进制连接配置
    打开OrientDB安装目录下的config/orientdb-server-config.xml,确认存在如下配置且端口为2424:

    <listener protocol="binary" port-range="2424-2424" ip-address="0.0.0.0"/>
    

    同时确保<protocols>节点下包含二进制协议定义:

    <protocol name="binary" implementation="com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary"/>
    
  • 排查防火墙或安全软件拦截
    Windows防火墙、杀毒软件可能阻止PHP进程访问2424端口。临时关闭防火墙测试连接,若成功,需将OrientDB服务或PHP进程加入防火墙允许列表。

  • 验证sockets扩展是否真正生效
    创建phpinfo.php文件,内容为<?php phpinfo(); ?>,访问后搜索sockets,确认扩展状态为已加载。若未加载,重启Apache/Nginx服务确保php.ini修改生效。

  • 检查版本兼容性
    确认PhpOrient版本与OrientDB版本匹配,比如OrientDB 3.x需要对应版本的PhpOrient。可尝试更新PhpOrient到最新稳定版,或降级OrientDB到兼容版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 20:52:44