Как я могу использовать neo4j с PHP на Windows? - PullRequest
0 голосов
/ 09 ноября 2018

я знаю, что эта тема повторяется, но я не могу это сделать ... я запускаю это в моем cmd

C: \ Users \ Asus> композитору требуется graphaware / neo4j-php-client

и я использую этот код:

   <?php
/**
 * To install Neo4j-PHP-Client, we use Composer
 *
 * $ curl -sS https://getcomposer.org/installer | php
 * $ php composer.phar require graphaware/neo4j-php-client
 *
 */

require 'C:\Users\Asus\vendor\autoload.php';

use GraphAware\Neo4j\Client\ClientBuilder;

// change to your hostname, port, username, password
$neo4j_url = "neo4j@bolt://localhost:11004";

// setup connection
$client = ClientBuilder::create()
    ->addConnection('default', $neo4j_url)
    ->build();

// setup data
$insert_query = <<<EOQ
UNWIND {pairs} as pair
MERGE (p1:Person {name:pair[0]})
MERGE (p2:Person {name:pair[1]})
MERGE (p1)-[:KNOWS]-(p2);
EOQ;

// friend data to insert
$data = [["Jim","Mike"],["Jim","Billy"],["Anna","Jim"],
    ["Anna","Mike"],["Sally","Anna"],["Joe","Sally"],
    ["Joe","Bob"],["Bob","Sally"]];

// insert data
$client->run($insert_query, ["pairs" => $data]);


// friend of friend: query
$foaf_query = <<<EOQ
MATCH (person:Person)-[:KNOWS]-(friend)-[:KNOWS]-(foaf)
WHERE person.name = {name}
  AND NOT (person)-[:KNOWS]-(foaf)
RETURN foaf.name AS name
EOQ;

// friend of friend: build and execute query
$params = ['name' => 'Joe'];
$result = $client->run($foaf_query, $params);

foreach ($result->records() as $record) {
    echo $record->get('name') . PHP_EOL;
}


// common friends: query
$common_friends_query = <<<EOQ
MATCH (user:Person)-[:KNOWS]-(friend)-[:KNOWS]-(foaf:Person)
WHERE user.name = {user} AND foaf.name = {foaf}
RETURN friend.name AS friend
EOQ;

// common friends: build and execute query
$params = ['user' => 'Joe', 'foaf' => 'Sally'];
$result = $client->run($common_friends_query, $params);

foreach ($result->records() as $record) {
    echo $record->get('friend') . PHP_EOL;
}


// connecting paths: query
$connecting_paths_query = <<<EOQ
MATCH path = shortestPath((p1:Person)-[:KNOWS*..6]-(p2:Person))
WHERE p1.name = {name1} AND p2.name = {name2}
RETURN [n IN nodes(path) | n.name] as names
EOQ;

// connecting paths: build and execute query
$params = ['name1' => 'Joe', 'name2' => 'Billy'];
$result = $client->run($connecting_paths_query, $params);

foreach ($result->records() as $record) {
    print_r($record->get('names'));
}

и у меня есть эта ошибка Примечание: неопределенный индекс: схема в C: \ Users \ Asus \ vendor \ graphaware \ neo4j-php-client \ src \ Connection \ Connection.php в строке 77

Примечание: неопределенный индекс: хост в C: \ Users \ Asus \ vendor \ graphaware \ neo4j-php-client \ src \ Connection \ Connection.php в строке 77

Предупреждение: stream_socket_client (): невозможно подключиться к tcp: //: //: 7687: 7687 (запрошенный адрес недопустим в своем контексте.) В C: \ Users \ Asus \ vendor \ graphaware \ neo4j- болт \ src \ IO \ StreamSocket.php в строке 167

Неустранимая ошибка: необработанное исключение «GraphAware \ Bolt \ Exception \ IOException» с сообщением «Ошибка подключения к серверу (10049):« Запрошенный адрес недопустим в своем контексте. »В C: \ Users \ Asus \ vendor \ graphaware \ neo4j-bolt \ src \ IO \ StreamSocket.php: 170 Трассировка стека: # 0 C: \ Users \ Asus \ vendor \ graphaware \ neo4j-bolt \ src \ IO \ StreamSocket.php (189): GraphAware \ Bolt \ IO \ StreamSocket-> connect () # 1 C: \ Users \ Asus \ vendor \ graphaware \ neo4j-bolt \ src \ Driver.php (114): GraphAware \ Bolt \ IO \ StreamSocket-> reconnect () # 2 C: \ Users \ Asus \ vendor \ graphaware \ neo4j-bolt \ src \ Driver.php (98): GraphAware \ Bolt \ Driver-> handshake () # 3 C: \ Users \ Asus \ vendor \ graphaware \ neo4j- php-client \ src \ Connection \ Connection.php (164): GraphAware \ Bolt \ Driver-> session () # 4 C: \ Users \ Asus \ vendor \ graphaware \ neo4j-php-client \ src \ Connection \ Connection. php (115): GraphAware \ Neo4j \ Client \ Connection \ Connection-> checkSession () # 5 C: \ Users \ Asus \ vendor \ graphaware \ neo4j-php-client \ src \ Client.php (45): GraphAware \ Neo4j \ Client \ Подключение \ Подключение-> RU n ('UNWIND {pair} ...', Array, NULL) # 6 C в C: \ Users \ Asus \ vendor \ graphaware \ neo4j-bolt \ src \ IO \ StreamSocket.php в строке 170

1 Ответ

0 голосов
/ 09 ноября 2018

Трассировка стека выглядит так, как будто она не может проанализировать URL-адрес соединения, потому что похоже, что он подходит без схемы и хоста .

Похожемне кажется, что она прослеживается до этой строки в коде, который вы разместили:

$client->run($insert_query, ["pairs" => $data]);

, который, я думаю, в конечном итоге использует URL, определенный в этой строке:

$neo4j_url = "neo4j@bolt://localhost:11004";

, но этот формат выглядитнеправильно для меня;когда имя пользователя и пароль предоставляются как часть URL-адреса, формат:

 foo://example.com:8042/over/there?name=ferret#nose
 \_/   \______________/\_________/ \_________/ \__/
  |           |            |            |        |
scheme     authority       path        query   fragment

и часть authority:

authority   = [ userinfo "@" ] host [ ":" port ]

Итак, URL-адрес, который вы хотите получить,:

$neo4j_url = "http://neo4j:bolt@localhost:11004/";      -or-
$neo4j_url = "bolt://neo4j:password@localhost:11004/";  <-- from doc linked in comment

В некоторой степени это догадки, но я надеюсь, что это решит это или установит правильный путь для его решения.

Ссылка на формат URI: https://tools.ietf.org/html/rfc3986

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...