Как избежать использования sudo с Composer

Я пытаюсь настроить чистую реализацию PHP-клиента GraphAware Neo4j, следуя инструкциям Прочти меня. Я работаю на PHP 7.0.8-0ubuntu0.16.04.2 (cli) (NTS)

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


Я установил Composer, следующим образом (инструкции)

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 так, чтобы он был доступен глобально, как описано Вот:

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

Далее я установил последнюю версию neo4j-php-client:

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

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

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

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

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


Наконец, в папке моего проекта я создал файл с именем index.php со следующим скриптом:

<?php

require_once 'vendor/autoload.php';

use GraphAware\Neo4j\Client\ClientBuilder;

$client = ClientBuilder::create()
->addConnection('default', 'http://neo4j:password@localhost:7474') // Example for HTTP connection configuration (port is optional)
->addConnection('bolt', 'bolt://neo4j:password@localhost: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 как обязательное расширение для установки.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]