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
当然你需要记住之后重启服务器。
我刚刚在 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
当然你需要记住之后重启服务器。