Php 避免在Composer中使用sudo
我正在尝试建立GraphAware的Neo4j PHP客户端的基本实现,如下所示。我正在使用PHP7.0.8-0ubuntu0.16.04.2(cli)(NTS) 为了让它工作,我发现我必须对Composer使用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,使其在
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/