2016-09-30 2 views
0

J'essaye de mettre en place une implémentation complète du client PHP Neo4j de GraphAware, en suivant le ReadMe. Je travaille sur PHP 7.0.8-0ubuntu0.16.04.2 (cli) (NTS)Éviter d'utiliser sudo avec Composer

Pour que cela fonctionne, je trouve que je dois utiliser sudo avec Composer, contre les avertissements donnés par Composer lui-même.


J'ai installé Compositeur, comme suit (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 

Cela a conduit à l'annonce suivante du succès:

Composer successfully installed to: /home/blackslate/composer.phar 

Je me suis alors déplacé Compositeur pour qu'il soit disponible dans le monde tel que décrit here:

sudo mv /home/blackslate/composer.phar /usr/local/bin/composer 

Ensuite, j'ai installé la dernière Neo4j-php-client:

sudo apt-get install php-bcmath 
sudo composer require graphaware/neo4j-bolt 
composer require graphaware/neo4j-php-client:^4.0 

L'installation et l'utilisation de base instructions ne comprennent pas les deux premières étapes ci-dessus, mais la commande finale échoue sans eux.

La deuxième ligne a montré un avertissement de ne pas exécuter Composer en tant que root, mais si je ne l'ai pas, j'obtenu l'erreur suivante:

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 

Cette installé un répertoire nommé fournisseur dans mon répertoire personnel. Je l'ai déplacé dans mon répertoire de projet.


Enfin, dans mon dossier de projet, j'ai créé un fichier nommé index.php avec le script suivant:

<?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(); 

J'ai maintenant un répertoire avec la structure suivante:

index.php   // as shown above 
vendor/    // the directory installed by Composer 
     autoload.php 
     composer/ 
     graphaware/ 
     guzzlehttp/ 
     myclabs/ 
     psr/ 
     symfony/ 

Tout semble fonctionner comme prévu.

Ma question est la suivante: y a-t-il un moyen d'y parvenir sans utiliser sudo pour lancer Composer?

Répondre

1

Vous ne devriez pas utiliser sudo. Deuxièmement, vous devez exiger le client dans votre dossier de projet, pas seulement dans votre répertoire personnel.

Il n'y a pas besoin de boulon car c'est une dépendance implicite du client lui-même.

Pour l'extension bcmath, elle est mentionnée dans le fichier README en tant qu'extension obligatoire à installer.

+0

Donc, si je n'utilise pas sudo, comment réussir l'installation? –

+1

@JamesNewton En exécutant 'composer require' avec sudo la première fois, le compositeur a créé des fichiers (à savoir' composer.json', 'composer.lock', et possiblement le répertoire' vendeurs ') avec des permissions telles que le second 'exige du compositeur' sans sudo ne pouvait pas leur écrire.Si vous aviez lancé le programme 'require require 'dans votre répertoire de projet sans sudo, vous n'auriez pas eu de problèmes. Vous pourriez également avoir modifié la propriété/les permissions sur ces fichiers sudo afin que votre utilisateur de base puisse y accéder. –