2016-01-20 28 views
3

首先,我不能使用作曲家,因爲Im在公司網絡下。我嘗試了一切來讓作曲家工作:如何在沒有作曲者(企業網絡)的情況下安裝供應商捆綁

  • HTTP_PROXY,HTTPS_PROXY,HTTPS_FULLURI ...沒有任何工作。 Composer診斷爲http packagist提供了一個OK狀態,但是爲https連接提供了FAILS。它給我的錯誤是:

SSL:握手超時。

但是,這不是我的問題,我花了很多時間試圖讓作曲家工作(但是,如果你有一個解決方案,你會是我的天)

我真正的問題是:如何手動安裝軟件包

我想安裝此軟件包:http://knpbundles.com/pierredup/MenuBundle

我所做的嘗試安裝包:

  • 註冊捆在appKernel.php:

new \CS\MenuBundle\CSMenuBundle()

  • 試着將它添加在自動加載。 php:

$loader->add('CS', __ DIR __.'/../vendor/CS/CSMenuBundle.php');

(不知道如何正確添加PHP代碼...)

但它不工作,得到了以下錯誤:

試圖加載類 「CSMenuBundle」 從命名空間「CS \ MenuBundle」。 你忘記了另一個命名空間的「使用」語句嗎?

然後,即使它是不是一個好的做法,我試圖將它添加到autoload_namespaces.php,做後轉儲,自動加載:

「CS \ MenuBundle」 =>陣列($ vendorDir '/ CS /')。

我仍然有一個錯誤,但不完全相同的一個:

試圖從namespac裝入類 「CSMenuBundle」 e「CS \ MenuBundle」。 您忘記了「CS \ MenuBundle \ CSMenuBundle」的「使用」聲明嗎?

現在我有點沮喪,我看到很多帖子(不是Stack),人們尖叫,因爲我們必須使用composer來管理依賴關係。我完全同意這一點,但我不能,所以我試圖找到另一種方式,因爲我找不到任何明確的教程,解釋瞭如何在沒有作曲家的情況下安裝供應商,在這裏。

+1

您是否下載了該軟件包的源代碼並將其放入了所需的文件夾中?也許你最好在本地安裝Composer的依賴關係,然後將'vendor'目錄與生產系統同步。 – xabbuh

+1

我會認爲你問的是錯誤的問題。雖然一般情況下可以下載所有需要的軟件包及其依賴關係到正確的版本,將它們放到一個文件夾中,並添加一些自動加載,但這是一個繁瑣的任務,需要自動執行。問題是:如果Composer無法使用HTTPS,那麼您的自動腳本也無法執行此操作。你最終無法不斷更新你的依賴關係,並會避免這樣做。正確的解決方案是找到一種正確使用Composer的方法。詢問你的同事和老闆如何到達那裏。沒有替代。 – Sven

+0

我必須說你的評論和下面給出的答案是偉大的。我成功地安裝了這個軟件包,我只需要創建文件夾MenuBundle,然後autoload_namespaces運行良好。我在gitHUB上爲Everyy提供的symfony的MaterializeBundle做了同樣的事情。我完全意識到,沒有作曲家的工作是行不通的......我想對於這種捆綁(我的意思是前束如物化),這並不是一個很大的問題。但正如你所說,對於CS或任何其他捆綁包,我會撞上一堵牆或另一個...不是我的錯btw。謝謝你的時間 –

回答

1

請注意,我直接針對您在問題中看到的問題進行了評論。

但是,我看着你想用的包,看看是否有任何機會安裝它(喜歡Composer)。我不認爲這是可能的或可行的。

composer require customscripts/menubundle:dev-master - 這將是Composer完成一切的簡單命令。但是也有問題:

  1. 要使用未註冊在packagist.org的包裝,所以沒有辦法簡單地用作曲正確連接到互聯網的機器上,搶了包,他們壓縮並將它們轉移到您需要的地方。

  2. 要解決這個問題,您需要手動將存儲庫添加到composer.json文件 - 這可能確實有效(但是它會佔用我VM上的太多時間)。你最終會得到2012年最後編輯的代碼!

  3. 該代碼的依賴關係可能不再適用。該軟件包的composer.json列出"require": {"knplabs/knp-menu-bundle": "dev-master", "symfony/framework-bundle": ">=2.0,<2.3-dev", "jms/di-extra-bundle": "1.1.*"} - 即使是第一個「knplabs/knp-menu-bundle」也不會起作用。請記住,這個軟件包的代碼是從2012年開始的 - 現在我們已經在2016年了,所以「knp-menu-bundle」已經在master分支上進行了四年的開發。根本沒有辦法知道這個包使用了哪個提交。你必須對這些丟失的信息進行反向工程。

  4. 此外,你會看到爲什麼Composer很棒,手動操作很糟糕:除了你希望的包之外,你還必須下載這裏提到的三個附加包。

  5. 但是,檢測必須添加的軟件包是遞歸任務:knp-menu-bundle對knp-menu(沒有進一步的依賴關係)和symfony/framework-bundle(已經添加)有依賴性。 symfony/framework-bundle本身依賴於9個以上的Symfony包和doctrine/common ...等等。如果您無法使用Composer,則必須檢測每一個這樣的包並手動下載正確的版本。

跳過原始包,因爲安裝時我沒有完成,而我正在輸入我的答案,我試圖安裝knp-menu-bundle來查看將安裝多少包。作曲家安裝了20個軟件包,其中一些使用2.8版的Symfony(它應該與Symfony 2.2的東西兼容,不應該是這樣) - 我簡單地跑composer require knplabs/knp-menu-bundle:1.1.1以從2012年開始購買類似舊版本的knp-menu-bundle。

使用Composer的優勢在於它支持快速開發,允許快速更新,可靠地降級(如果您提交composer.lock文件並始終使用標記版本),並且只需允許即時添加新軟件包即可。作爲PHP開發人員,不能使用Composer是一個非常嚴格的限制。通過HTTPS代理與您的老闆或團隊負責人討論公司情況,並找到使用Composer的解決方案。另一種方法是從頭開始自己開發所有的東西,或者浪費大量的時間試圖擺脫手動下載,而這些下載並不容易。

相關問題