1

我是 Neo4j 的新手。我正在使用带有 WAMP 的 Neo4jPHP 来尝试使用以下代码测试我与 Neo4j 数据库的连接:

require('vendor/autoload.php');

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

但是当我运行上面的代码时,我得到了这些错误:

致命错误:第 116 行 C:\wamp\www\vendor\everyman\neo4jphp\lib\Everyman\Neo4j\Command.php 中带有消息的未捕获异常 'Everyman\Neo4j\Exception'

Everyman\Neo4j\Exception: 无法检索服务器信息 [401]: Headers: Array ([Date] => Tue, 08 Sep 2015 21:48:28 GMT [Content-Type] => application/json; charset=UTF- 8 [WWW-Authenticate] => None [Content-Length] => 144 [Server] => Jetty(9.2.z-SNAPSHOT) ) 正文:Array ( [errors] => Array ( [0] => Array ( [ message] => 未提供授权标头。[code] => Neo.ClientError.Security.AuthorizationFailed ) ) ) 在 C:\wamp\www\vendor\everyman\neo4jphp\lib\Everyman\Neo4j\Command.php 中的第 116 行

正如我所说,我是 Neo4j 的新手,所以我不知道我做错了什么。Neo4j 正在运行,我已经能够通过连接到localhost:7474

任何帮助表示赞赏!

4

2 回答 2

1

我认为 401 意味着 Neo4j 需要身份验证。查看 neo4jphp,我不确定它是否支持 Neo4j 2.2.0 中引入的 Neo4j 的默认身份验证。

您可以查看NeoClient。从 README 中,连接用户名和密码的代码类似于:

$client = ClientBuilder::create()
    ->addConnection('default', 'http', 'myserver.dev', 7474, true, 'username', 'password')
    ->build();

如果您真的想使用 neo4jphp,您可以禁用身份验证(当然不推荐,除非您以其他方式保护数据库)。回购中也有这个问题可能会有所帮助:

https://github.com/jadell/neo4jphp/issues/165

于 2015-09-08T23:07:23.617 回答
0

这可能会解决问题。将 HOSTNAME、PORT、USER 和 PASSWORD 替换为您的值。

$client = new Everyman\Neo4j\Client(HOSTNAME, PORT);
$client->getTransport()->setAuth(USER, PASSWORD);
于 2015-11-18T21:28:03.857 回答