Я только что установил сервер neo4j в Windows и пытаюсь подключиться с помощью php. Я запустил xampp, установил neo4jphp с помощью composer, а затем попытался проверить соединение, используя следующий скрипт:
<?php
require('vendor/autoload.php');
$client = new Everyman\Neo4j\Client('localhost', 7474);
print_r($client->getServerInfo());
?>
Теперь вместо отображения состояния сервера произошла фатальная ошибка, подобная этой:
Неустранимая ошибка: необработанное исключение «Everyman \ Neo4j \ Exception» с
сообщение ‘Невозможно получить информацию о сервере [401]: Заголовки: Массив ([Дата] => Ср., 27 мая 2015 г. 10:54:01 GMT [Content-Type] => application / json; charset = UTF-8 [WWW-Authenticate] => Нет [Content-Length] => 144
[Server] => Jetty (9.2.z-SNAPSHOT)) Тело: Array ([ошибки] => Array (
[0] => Array ([message] => Не указан заголовок авторизации. [Code] => Neo.ClientError.Security.AuthorizationFailed))) ‘в C: \ xampp \ htdocs \ neo4j \ vendor \ everyman \ neo4jphp \ lib \ Everyman \ Neo4j \ Command.php: 116
Трассировка стека: # 0
C: \ XAMPP \ HTDOCS \ Neo4j \ поставщика \ обыватель \ neo4jphp \ Lib \ обывателя \ Neo4j \ Command \ GetServerInfo.php (53):
Everyman \ Neo4j \ Command-> throwException («Невозможно повторить …», 401,
Array, Array) # 1
C: \ XAMPP \ HTDOCS \ Neo4j \ поставщика \ обыватель \ neo4jphp \ Lib \ обывателя \ Neo4j \ Command.php (69):
Everyman \ Neo4j \ Command \ GetServerInfo-> handleResult (401, Array, Array)
# 2 C: \ xa в C: \ xampp \ htdocs \ neo4j \ vendor \ everyman \ neo4jphp \ lib \ Everyman \ Neo4j \ Command.php
по линии 116
Как это решить? Любая помощь будет оценена. Заранее спасибо.
Это будет работать. Вам просто нужно определить учетные данные авторизации, например, так:
<?php
require('vendor/autoload.php');
$client = new Everyman\Neo4j\Client(
(new Everyman\Neo4j\Transport\Curl('localhost',7474))
->setAuth('neo4j','neo4j')
);
print_r($client->getServerInfo());
Настройте пользователя и пароль соответственно («neo4j» / «neo4j» — это значения по умолчанию).
Другое решение — отключить требование авторизации при доступе к Neo4j. Это можно сделать, отредактировав файл конфигурации Neo4j:
conf/neo4j-server.properties
и установив в false следующий флаг:
dbms.security.auth_enabled=false
Конечно, вы должны помнить о перезагрузке сервера после этого.
Если вы установили последнюю версию Neo4j, вам потребуется авторизация (укажите имя пользователя и пароль) для подключения к Neo4j. Похоже, что у вашего комплекта Everyman такого нет, или вы используете более старый. я использую Neoxygen / neoclient я, который предоставляет возможность предоставить имя пользователя и пароль.