2016-09-30 71 views
0

我試圖設置一個基於的GraphAware的Neo4j PHP客戶端的基本實現。我正在使用PHP 7.0.8-0ubuntu0.16.04.2(cli)(NTS)避免在作曲家中使用sudo

爲了讓這個工作,我發現我必須使用sudo 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 

我那麼感動作曲家,使其在全球上市,如所述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 

安裝和基本用法說明不包括上述前兩個步驟,但最後的命令沒有他們失敗。

第二行顯示一個警告,不要運行作曲家根,但如果我沒有,然後我得到了以下錯誤:

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擴展,它在自述文件中被提及爲要安裝的強制擴展。

+0

因此,如果我不使用sudo,我如何獲得安裝成功? –

+1

@JamesNewton通過第一次用sudo運行'composer require',作曲家創建了許多文件(即'composer.json','composer.lock',可能還有'vendors' dir),這樣第二個'composer require'沒有sudo就不能寫信給他們。如果你在沒有sudo的情況下在你的項目目錄中運行了最初的'composer require',你就不會遇到問題。您也可以更改這些sudo創建的文件的所有權/權限,以便您的基本用戶可以訪問它們。 –