Невозможно подключиться к Neo4j с помощью NeoClient для PHP
Я новичок в Neo4j. Я использую Neo4jPHP с WAMP, чтобы попытаться проверить мое соединение с базой данных Neo4j с помощью следующего кода:
require('vendor/autoload.php');
$client = new Everyman\Neo4j\Client('localhost', 7474);
print_r($client->getServerInfo());
Но когда я запускаю приведенный выше код, я получаю следующие ошибки:
Неустранимая ошибка: необработанное исключение "Everyman\Neo4j\Exception" с сообщением "в C:\wamp\www\vendor\everyman\neo4jphp\lib\Everyman\Neo4j\Command.php в строке 116
Everyman\Neo4j\Exception: Невозможно получить информацию о сервере [401]: Заголовки: Массив ( [Дата] => Вторник, 08 сентября 2015 21:48:28 GMT [Content-Type] => application/json; charset=UTF-8 [WWW-Authenticate] => Нет [Content-Length] => 144 [Server] => Jetty(9.2.z-SNAPSHOT)) Тело: Массив ( [ошибки] => Массив ( [0] => Массив ( [message] => Не указан заголовок авторизации. [code] => Neo.ClientError.Security.AuthorizationFailed))) в C:\wamp\www\vendor\everyman\neo4jphp\lib\Everyman\Neo4j\Command.php в строке 116
Как я уже сказал, я новичок в Neo4j, поэтому я не знаю, что я могу делать неправильно. Neo4j запущен, и я смог проверить его, подключившись к localhost:7474
Любая помощь приветствуется!
2 ответа
Я думаю, что 401 означает, что Neo4j требует аутентификации. Глядя на neo4jphp, я не уверен, что он поддерживает аутентификацию Neo4j по умолчанию, которая была представлена в Neo4j 2.2.0.
Вы можете проверить NeoClient. Из README код для подключения с именем пользователя и паролем будет выглядеть примерно так:
$client = ClientBuilder::create()
->addConnection('default', 'http', 'myserver.dev', 7474, true, 'username', 'password')
->build();
Если вы действительно хотите использовать neo4jphp, вы можете отключить аутентификацию (конечно, не рекомендуется, если вы не защитили базу данных иным образом). Существует также эта проблема в репо, которая может быть полезна:
Это может решить проблему. Замените HOSTNAME, PORT, USER и PASSWORD своими значениями.
$client = new Everyman\Neo4j\Client(HOSTNAME, PORT);
$client->getTransport()->setAuth(USER, PASSWORD);