Я начинаю с небольшого домашнего проекта с использованием Neo4J и кодирую в PHP.
Я установил пару Docker контейнеров, используя следующий файл yml:
services:
neo4j:
build: ./
image: neo4j:latest
volumes:
- $HOME/Documents/GitHub/engine/neo4j/data:/data
- $HOME/Documents/GitHub/engine/neo4j/logs:/logs
- $HOME/Documents/GitHub/engine/neo4j/import:/var/lib/neo4j/import
- $HOME/Documents/GitHub/engine/neo4j/plugins:/plugins
ports:
- "7474:7474"
- "7687:7687"
restart: always
environment:
NEO4J_AUTH: neo4j/test
NEO4J_default_listen_address: 0.0.0.0
apache-php:
depends_on:
- neo4j
build: ./
image: php:7.2-apache
volumes:
- $HOME/Documents/GitHub/engine/php:/var/www/html
ports:
- "80:80"
restart: always
volumes:
neo4j-data:
driver: local
neo4j-logs:
driver: local
neo4j-import:
driver: local
neo4j-plugins:
driver: local
php:
driver: local
У меня есть простой индекс. php, который должен соединиться, выполнить простой запрос и вернуть результаты:
require __DIR__.'/vendor/autoload.php';
use GraphAware\Neo4j\Client\ClientBuilder;
$client = ClientBuilder::create()
->addConnection('default', 'http://neo4j:test@neo4j:7474') // Example for HTTP connection configuration (port is optional)
->build();
$
$query = 'MATCH (n:Person)-[:FOLLOWS]->(friend) RETURN n.name, collect(friend) as friends';
$result = $client->run($query);
foreach ($result->getRecords() as $record) {
echo sprintf('Person name is : %s and has %d number of friends', $record->value('name'), count($record->value('friends')));
}
?>
Но при загрузке индекса. php Я получаю следующую ошибку :
Fatal error: Uncaught Http\Client\Common\Exception\ClientErrorException: Unsupported Media Type
in /var/www/html/vendor/php-http/client-common/src/Plugin/ErrorPlugin.php:72 Stack trace: #0
/var/www/html/vendor/php-http/client-common/src/Plugin/ErrorPlugin.php(54):
Http\Client\Common\Plugin\ErrorPlugin-
>transformResponseToException(Object(GuzzleHttp\Psr7\Request), Object(GuzzleHttp\Psr7\Response))
#1 /var/www/html/vendor/php-http/httplug/src/Promise/HttpFulfilledPromise.php(34):
Http\Client\Common\Plugin\ErrorPlugin->Http\Client\Common\Plugin\{closure}
(Object(GuzzleHttp\Psr7\Response)) #2 /var/www/html/vendor/php-http/client-
common/src/Plugin/ErrorPlugin.php(55): Http\Client\Promise\HttpFulfilledPromise-
>then(Object(Closure)) #3 /var/www/html/vendor/php-http/client-common/src/PluginClient.php(161):
Http\Client\Common\Plugin\ErrorPlugin->handleRequest(Object(GuzzleHttp\Psr7\Request),
Object(Closure), Object(Closure)) #4 /var/www/html/vendor/php-http/client-
common/src/PluginClient.php(175): Http\Client\Common\PluginClient->H in
/var/www/html/vendor/php-http/client-common/src/Plugin/ErrorPlugin.php on line 72
Я могу подключиться к базе данных Neo4J через веб-клиент по умолчанию на локальном хосте: 7474 и выполнить запрос в соответствии с требованиями с правильными результатами.
Я следил за найденной информацией здесь: https://github.com/graphaware/neo4j-php-client
Есть какие-нибудь указатели на то, что не хватает? Ta