避免在Composer中使用sudo

时间:2016-09-30 21:39:44

标签: php neo4j composer-php sudo graphaware

我正在尝试按照ReadMe设置GraphAware的Neo4j PHP客户端的简单实现。我正在研究PHP 7.0.8-0ubuntu0.16.04.2(cli)(NTS)

为了让这个工作,我发现我必须使用Composer的CheckBox,而不是Composer本身给出的警告。

我已经安装了Composer,如下所示(instructions

dt = new DataTable();
var c1 = dt.Columns.Add("C1", typeof(int));
c1.AllowDBNull = true;

//Uncomment the next statement if you want default value be 0 = unchecked
//c1.DefaultValue = 0;

//Uncomment the next statement if you want to allow the user to set value to null
//checkBox1.ThreeState = true;

var bs = new BindingSource();
bs.DataSource = dt;
checkBox1.DataBindings.Add("CheckState", bs, "C1", true,
    DataSourceUpdateMode.OnPropertyChanged, CheckState.Indeterminate);
this.bindingNavigator1.BindingSource = bs;

这导致了以下成功宣布:

sudo

然后我移动了Composer,以便全局可用,如here所述:

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

接下来,我安装了最新的neo4j-php-client:

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

安装和基本用法说明不包括上面的前两个步骤,但最终命令在没有它们的情况下失败。

第二行显示警告不以root身份运行Composer,但如果我没有,那么我收到以下错误:

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

这在我的主目录中安装了名为vendor的目录。我把它移到我的项目目录。

最后,在我的项目文件夹中,我使用以下脚本创建了一个名为index.php的文件:

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

我现在有一个具有以下结构的目录:

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(); 运行Composer的情况下实现这一目标?

1 个答案:

答案 0 :(得分:1)

你不应该使用sudo。其次,您应该在项目文件夹中要求客户端,而不仅仅是在您的主目录中。

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

对于bcmath扩展,它在README中被提及为要安装的强制扩展。