致命错误:未捕获的异常' Everyman \ Neo4j \ Exception'消息'无法检索服务器信息[401]:

时间:2015-05-27 10:57:20

标签: php neo4jphp

我刚刚在Windows中安装了neo4j服务器,我正在尝试与php连接。我运行了xampp,用composer安装了neo4jphp,然后尝试使用以下脚本检查连接:

<?php
    require('vendor/autoload.php');


    $client = new Everyman\Neo4j\Client('localhost', 7474);
    print_r($client->getServerInfo());
?>

现在,不是显示服务器状态,而是发生致命错误:

  

致命错误:未捕获的异常&#39; Everyman \ Neo4j \ Exception&#39;同   消息&#39;无法检索服务器信息[401]:标题:数组([日期]   =&GT; 2015年5月27日星期三10:54:01 GMT [Content-Type] =&gt;应用/ JSON; charset = UTF-8 [WWW-Authenticate] =&gt;无[Content-Length] =&gt; 144   [服务器] =&gt; Jetty(9.2.z-SNAPSHOT))正文:数组([errors] =&gt;数组(   [0] =&gt;数组([message] =&gt;未提供授权标题。[code]   =&GT; Neo.ClientError.Security.AuthorizationFailed)))&#39;在C:\ xampp \ htdocs \ neo4j \ vendor \ everyman \ neo4jphp \ lib \ Everyman \ Neo4j \ Command.php:116   堆栈跟踪:#0   C:\ XAMPP \ htdocs中\ Neo4j的\厂商\普通人\ neo4jphp \ lib中\普通人\ Neo4j的\命令\ GetServerInfo.php(53):   Everyman \ Neo4j \ Command-&gt; throwException(&#39;无法重新...&#39;,401,   数组,数组)#1   C:\ XAMPP \ htdocs中\ Neo4j的\厂商\普通人\ neo4jphp \ lib中\普通人\ Neo4j的\ Command.php(69):   Everyman \ Neo4j \ Command \ GetServerInfo-&gt; handleResult(401,Array,Array)   C:\ xampp \ htdocs \ neo4j \ vendor \ everyman \ neo4jphp \ lib \ Everyman \ Neo4j \ Command.php中的#2 C:\ xa   在第116行

如何解决这个问题?任何帮助将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:0)

如果您安装了最新版本的Neo4j,则需要授权(提供用户名和密码)才能连接到Neo4j。您的Everyman包似乎没有,或者您使用的是旧版。我自己使用Neoxygen/neoclient,它确实提供了提供用户名和密码的功能。

答案 1 :(得分:0)

它会起作用。您只需要定义授权凭证,例如:

<?php
   require('vendor/autoload.php');

   $client = new Everyman\Neo4j\Client(
            (new Everyman\Neo4j\Transport\Curl('localhost',7474))
                ->setAuth('neo4j','neo4j')
   );

   print_r($client->getServerInfo());

相应地调整用户/密码(&#39; neo4j&#39; /&#39; neo4j&#39;是默认值)。

另一种解决方案是在访问Neo4j时禁用授权要求。这可以通过编辑Neo4j配置文件来完成:

conf/neo4j-server.properties

并将以下标志设置为false:

dbms.security.auth_enabled=false

当然,您需要记住以后重新启动服务器。