2016-11-11 159 views
23

我試圖安裝Coinbase PHP API,但它需要作曲:如何安裝不作曲家作曲PHP包?

https://github.com/coinbase/coinbase-php

我正在尋找一個通用的PHP解決方案(可能是一個功能),讓我直接安裝作曲家包到我的服務器,而無需使用Composer。

我認爲Composer的開發人員相信他們正在幫助人們,但實際上有成千上萬的初學者開發人員被'作曲家障礙'鎖定在學習網絡開發之外。

如果有一個靈活的解決方案或一些我們可以在沒有Composer的情況下安裝的方法,這真的會有幫助嗎?我怎樣才能做到這一點?

請不要與一些諷刺性的評論迴應。有跡象表明,不希望使用作曲人,我不明白爲什麼我們應該爲了做web開發被趕進一個特定的第三方軟件。

+2

所有使用composer的軟件包仍然只是充滿PHP文件的目錄。您可以按照您作曲家存在之前的方式完全安裝它們:將它們複製到某處並「包含」這些文件。 – deceze

+2

基於Composer的安裝意味着運行一個命令,該命令幾乎總是顯示在軟件包主頁中。我知道有用於手動安裝的用例,但它永遠不會是更簡單的方法。 –

+8

@ÁlvaroGonzález我無法不同意你的評論。請參閱:http://okmaya.com/2016/03/13/package-managers-hate-npm-composer/。我並不是說軟件包管理員對於某些人和項目來說並不好,只是他們通常需要更多的工作和努力,而不是簡單地在項目中放置文件夾並引用它。 – dallin

回答

11

composer.json file列出的依賴關係。在您的示例中:

"require": { 
    "php": ">=5.5.0", 
    "guzzlehttp/guzzle": "^6.0", 
    "psr/http-message": "^1.0", 
    "psr/log": "^1.0" 
}, 

然後,您必須在packagist站點中找到相應的軟件包。重複同樣的過程每個依存性:在其相應的composer.json文件找到額外的依賴並重新搜索。

當您最終獲得所需軟件包的完整列表時,您只需要逐一安裝它們。大多數情況下,這只是將文件放在項目目錄中某處的問題。但是您還必須確保PHP可以找到所需的類。既然你不使用作曲家的自動加載,你需要將它們添加到自己的自定義自動加載。您可以從相應的composer.json文件計算出的信息,例如:

"autoload": { 
    "psr-4": { "Coinbase\\Wallet\\": "src/" } 
}, 

如果不使用類自動加載器,你需要找出個別require_once語句。您可能需要大量的試驗和錯誤,因爲大多數圖書館作者都不會在意文檔記錄。

此外,以防萬一有關於這樣的困惑:

  • 作曲家爲Windows的官方GUI安裝程序和複製和粘貼適用於所有平臺命令行安裝過程。
  • Composer可以在本地運行,其輸出只是上傳到別處。您的共享主機中不需要SSH。
  • 安裝庫所需的命令可以從軟件包網站進行復制和粘貼 - 即使軟件包維護人員不在意文檔記錄,packagist.org默認也會生成它。

作曲家並不完美,它不適合所有用例,但是當涉及到安裝依賴它的庫時,它無疑是最好的替代品,而且是相當不錯的選擇。


我查過了我的其他答案。他們大多分爲兩類:

  1. 安裝一個圖書館和編寫自定義下載腳本與它
  2. 用於作曲

一個在線的基於Web的界面除非我失去了一些東西,沒有的他們解決由OP表示這樣的抱怨:

  • 學習曲線
  • 使用的第三方軟件
  • 可能性開發權的服務器上(使用SSH,我相信)
  • 潛在深的依賴關係樹
+10

如果這不能說服每個人都只是使用作曲家,那麼什麼都不會...... – deceze

+0

首先,作曲家的當前版本需要proc_open(),而這在任何地方都不可用。還有其他問題。雖然我同意作曲家有其優點,但我總是知道我有一天會遇到問題,而今天就是這樣。我還沒有想出如何爲50多個客戶端應用程序安裝共享庫(使用Composer)。 – karvonen

18

你可以嘗試https://php-download.com/,它可以幫助你下載所有依賴的大部分時間與vendor文件夾一起。它承諾作曲家不是必需的。 自己試了一下。它會查找並創建所有必需的文件夾並將其壓縮以供下載。完美的作品!

+1

完美運作!謝謝 !! – Yousphere

+6

這應該是被接受的答案。它只是做了作曲家的工作,然後返回一個zip。 – Soaku

+0

它沒有github的所有庫。當我嘗試使用這個例子:https://github.com/mgp25/Instagram-API它說它找不到它。 – IchHabsDrauf

1

我必須爲我沒有SSH訪問權限的FTP服務器執行此操作。這裏列出的網站工作,然後我意識到你可以在你自己的服務器(使用你的目標的PHP版本)上做一個作曲家安裝,然後複製所有文件。

+0

這應該是答案。爲我完美工作, –

+0

你能否更好地解釋你的答案?對不起,我的愚蠢。 – IchHabsDrauf

+0

@IchHabsDrauf基本上,他更願意使用作曲家(在這一部分,它不是真正的作曲家),而不是將文件複製到生產環境中。我對此的評論是,也許有些人沒有作曲家的開發環境,因此這不是一個真正的讚美者。 –

0

這不是最終的解決辦法,但對我來說這是大多數的情況下,一個很大的幫助: https://github.com/Wilkins/composer-file-loader

可以加載composer.json文件只是作爲作曲家會做到這一點。 這可以加載composer.json文件,而不作曲家(所以 theorically PHP 5.2就足夠了)

我知道這個問題是舊的,但我希望這會幫助別人。

0

我爲網站使用共享主機,無法在那裏執行命令。除了通過我通過瀏覽器請求的php腳本請求運行作曲,我通常使用這個工作流程:

  • 確保你已經在本地安裝了php。
  • 在桌面上創建目錄。
  • https://getcomposer.org/download/下載composer.phar(在標題下*手冊下載)並將其放置在目錄中。
  • 使文件composer.json粘貼在它下面的內容

    { 
        "require": { 
         "coinbase/coinbase": "~2.0" 
        } 
    } 
    
  • 瀏覽與你選擇(bash中,混帳的bash,CMD窗口的bash)的外殼目錄

  • 類型php composer.phar updatescreenshot of bash output
  • 通過ftp或任何你使用的機制將vendor目錄上傳到你的網絡服務器。
  • 包括在你的PHP項目,您加載庫(修改路徑到您上傳的供應商目錄,因此將包括自動加載文件)

    require_once('vendor/autoload.php'); 
    

這樣你依賴的好處管理,而且您不必手動包含所有文件,並手動下載所有依賴關係,更新它們與輸入php composer.phar update一樣簡單,然後使用新服務器替換服務器上的供應商目錄。