Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 避免在Composer中使用sudo_Php_Neo4j_Composer Php_Sudo_Graphaware - Fatal编程技术网

Php 避免在Composer中使用sudo

Php 避免在Composer中使用sudo,php,neo4j,composer-php,sudo,graphaware,Php,Neo4j,Composer Php,Sudo,Graphaware,我正在尝试建立GraphAware的Neo4j PHP客户端的基本实现,如下所示。我正在使用PHP7.0.8-0ubuntu0.16.04.2(cli)(NTS) 为了让它工作,我发现我必须对Composer使用sudo,而不是Composer本身给出的警告 我安装了Composer,如下所示() 这导致了以下成功公告: Composer successfully installed to: /home/blackslate/composer.phar 然后,我移动了Composer,使其在

我正在尝试建立GraphAware的Neo4j PHP客户端的基本实现,如下所示。我正在使用PHP7.0.8-0ubuntu0.16.04.2(cli)(NTS)

为了让它工作,我发现我必须对Composer使用
sudo
,而不是Composer本身给出的警告


我安装了Composer,如下所示()

这导致了以下成功公告:

Composer successfully installed to: /home/blackslate/composer.phar
然后,我移动了Composer,使其在全球可用,如下所述:


接下来,我安装了最新的neo4j php客户端:

sudo apt-get install php-bcmath
sudo composer require graphaware/neo4j-bolt
composer require graphaware/neo4j-php-client:^4.0
安装和基本用法说明不包括上述前两个步骤,但如果没有它们,最终命令将失败

第二行显示了一条警告,不要以root用户身份运行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   
这在我的主目录中安装了一个名为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();
所有这些似乎都按预期工作


我的问题是:有没有一种方法可以在不使用
sudo
运行Composer的情况下实现这一点?

您确实不应该使用sudo。其次,您应该要求客户机位于项目文件夹中,而不仅仅是主目录中

不需要使用bolt,因为它是客户端本身的隐式依赖项


对于bcmath扩展,在自述文件中提到它是必须安装的扩展。

因此,如果我不使用sudo,如何才能成功安装?@JamesNewton通过第一次使用sudo运行
composer require
,composer创建了文件(即
composer.json
composer.lock
,可能还有
供应商
dir)权限使得没有sudo的第二个
编写器require
无法写入它们。如果您在没有sudo的情况下在项目目录中运行初始
编写器require
,则不会遇到问题。您还可以更改那些sudo创建的文件的所有权/权限,以便您的基本用户可以访问它们。
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   
<?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/