Fatal error: Uncaught exception 'Everyman\Neo4j\Exception' with message 'Unable to retrieve server info [401]:

Fatal error: Uncaught exception 'Everyman\Neo4j\Exception' with message 'Unable to retrieve server info [401]:

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

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


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

现在,不再显示服务器状态,而是出现如下致命错误:

Fatal error: Uncaught exception 'Everyman\Neo4j\Exception' with message 'Unable to retrieve server info [401]: Headers: Array ( [Date] => Wed, 27 May 2015 10:54:01 GMT [Content-Type] => application/json; charset=UTF-8 [WWW-Authenticate] => None [Content-Length] => 144 [Server] => Jetty(9.2.z-SNAPSHOT) ) Body: Array ( [errors] => Array ( [0] => Array ( [message] => No authorization header supplied. [code] => Neo.ClientError.Security.AuthorizationFailed ) ) ) ' in C:\xampp\htdocs\neo4j\vendor\everyman\neo4jphp\lib\Everyman\Neo4j\Command.php:116 Stack trace: #0 C:\xampp\htdocs\neo4j\vendor\everyman\neo4jphp\lib\Everyman\Neo4j\Command\GetServerInfo.php(53): Everyman\Neo4j\Command->throwException('Unable to retri...', 401, Array, Array) #1 C:\xampp\htdocs\neo4j\vendor\everyman\neo4jphp\lib\Everyman\Neo4j\Command.php(69): Everyman\Neo4j\Command\GetServerInfo->handleResult(401, Array, Array) #2 C:\xa in C:\xampp\htdocs\neo4j\vendor\everyman\neo4jphp\lib\Everyman\Neo4j\Command.php on line 116

如何解决?任何帮助将不胜感激。提前致谢。

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

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

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

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

   print_r($client->getServerInfo());

相应地调整user/password('neo4j'/'neo4j'是默认值)。

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

conf/neo4j-server.properties

并将以下标志设置为 false:

dbms.security.auth_enabled=false

当然你需要记住之后重启服务器。