2016-09-30 5 views
0

Я пытаюсь настроить реализацию голографического клиента Neo4j GraphAware с помощью barebones, следуя ReadMe. Я работаю над PHP 7.0.8-0ubuntu0.16.04.2 (cli) (NTS)Избегайте использования sudo с Composer

Для того, чтобы это сработало, я считаю, что должен использовать sudo с Composer, против предупреждений самого Composer.


Я установил Composer, следующим образом (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 

Это привело к следующему объявлению успеха:

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

Затем я переехал Composer, так что он доступен по всему миру , как описано here:

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

Далее я установил последнюю Neo4j-PHP-клиент:

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

В установки и основное использование инструкции не включают в себя первые два шага выше, но окончательная команда не без них.

Вторая линия показал предупреждение не запускать Composer как корень, но если бы я не сделал, то я получил следующее сообщение об ошибке:

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 

Это установленный каталог с именем поставщика в моем домашнем каталоге. Я переместил его в каталог проекта.


Наконец, в моей папке проекта, я создал файл с именем 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(); 

У меня теперь есть каталог со следующей структурой:

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

Все работает нормально.

Мой вопрос: есть ли способ, которым я мог бы достичь этого, не используя sudo для запуска Composer?

ответ

1

Вы не должны использовать sudo. Во-вторых, вы должны требовать клиента в папке проекта, а не только в своем домашнем каталоге.

Нет необходимости требовать болт, поскольку это неявная зависимость самого клиента.

Для расширения bcmath он указан в README в качестве обязательного расширения для установки.

+0

Итак, если я не использую sudo, как мне добиться успеха в установке? –

+1

@JamesNewton При запуске 'composer require' с sudo в первый раз, композитор создал файлы (а именно' composer.json', 'composer.lock' и, возможно, каталог' vendors' с разрешениями, так что второй 'composer require' без sudo не могли писать им.Если вы запустили исходный 'comper require' в своем каталоге проекта без sudo, вы бы не столкнулись с проблемами. Вы также могли бы изменить права собственности/разрешения на эти файлы, созданные sudo, чтобы ваш базовый пользователь мог получить к ним доступ. –