Ich versuche, eine reine Implementierung von GraphAwares Neo4j PHP Client einzurichten, die ReadMe folgt. Ich arbeite an PHP 7.0.8-0ubuntu0.16.04.2 (CLI) (NTS)Vermeiden von sudo mit Composer
Um dies zu arbeiten, finde ich, dass ich sudo
mit Composer verwenden muss, gegen die Warnungen von Composer selbst gegeben.
I Composer installiert haben, wie folgt (instructions)
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === 'e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
sudo php composer-setup.php
Dies führte zu folgenden Erfolgsmeldung:
Composer successfully installed to: /home/blackslate/composer.phar
ich dann Komponist bewegt, so dass sie global verfügbar ist wie beschrieben here:
sudo mv /home/blackslate/composer.phar /usr/local/bin/composer
Als nächstes installierte ich den neuesten Neo4j-php-Client:
sudo apt-get install php-bcmath
sudo composer require graphaware/neo4j-bolt
composer require graphaware/neo4j-php-client:^4.0
Die Installation und grundlegende Verwendung Anweisungen, um die ersten beiden Schritte nicht oben sind, aber der letzte Befehl nicht ohne sie.
Die zweite Linie zeigte eine Warnung nicht Composer als root ausführen, aber wenn ich es nicht täte, dann bekam ich folgende Fehlermeldung:
Installation failed, reverting ./composer.json to its original content.
[ErrorException]
file_put_contents(/home/blackslate/vendor/composer/installed.json): failed
to open stream: Permission denied
Dieses ein Verzeichnis namens Anbieter in meinem Home-Verzeichnis installiert. Ich habe es in mein Projektverzeichnis verschoben.
schließlich in meinem Projektordner, habe ich eine Datei mit folgendem Skript namens index.php:
<?php
require_once 'vendor/autoload.php';
use GraphAware\Neo4j\Client\ClientBuilder;
$client = ClientBuilder::create()
->addConnection('default', 'http://neo4j:[email protected]:7474') // Example for HTTP connection configuration (port is optional)
->addConnection('bolt', 'bolt://neo4j:[email protected]:7687') // Example for BOLT connection configuration (port is optional)
->build();
ich jetzt ein Verzeichnis mit dem folgenden Aufbau haben:
index.php // as shown above
vendor/ // the directory installed by Composer
autoload.php
composer/
graphaware/
guzzlehttp/
myclabs/
psr/
symfony/
Alles scheint zu funktionieren wie erwartet.
Meine Frage ist: Gibt es eine Möglichkeit, die ich hätte erreichen können, ohne sudo
Composer zu verwenden?
Also, wenn ich Sudo nicht verwende, wie bekomme ich die Installation zum Erfolg? –
@JamesNewton Wenn Sie 'composer require' zum ersten Mal mit sudo ausführen, erstellt der Compiler Dateien (namentlich' composer.json', 'composer.lock' und möglicherweise das' vendors'-Verzeichnis) mit Berechtigungen, die der zweite 'composer erfordern' Ohne Sudo konnte ich ihnen nicht schreiben.Wenn Sie in Ihrem Projektverzeichnis ohne sudo den ersten 'composer require' ausgeführt hätten, wären Sie nicht auf Probleme gestoßen. Sie könnten auch die Eigentumsrechte/Berechtigungen für diese sudo-erstellten Dateien geändert haben, damit Ihr Basisbenutzer darauf zugreifen kann. –