Composer更新慢的終極解決方案

NO IMAGE

Packagist 映象

請各位使用本映象的同學注意:

本映象已經依照 composer 官方的資料來源安全策略完全升級並支援 https 協議!請各位同學 按照下面所示的兩個方法將 http://packagist.phpcomposer.com 修改為https://packagist.phpcomposer.com

還沒安裝 Composer 嗎?請往下看如何安裝 Composer 。

用法:

有兩種方式啟用本映象服務:

  • 系統全域性配置: 即將配置資訊新增到 Composer 的全域性配置檔案 config.json 中。見“例1”
  • 單個專案配置: 將配置資訊新增到某個專案的 composer.json 檔案中。見“例2”

例1:修改 composer 的全域性配置檔案(推薦方式)

開啟命令列視窗(windows使用者)或控制檯(Linux、Mac 使用者)並執行如下命令:

composer config -g repo.packagist composer https://packagist.phpcomposer.com

例2:修改當前專案的 composer.json 配置檔案:

開啟命令列視窗(windows使用者)或控制檯(Linux、Mac 使用者),進入你的專案的根目錄(也就是composer.json 檔案所在目錄),執行如下命令:

composer config repo.packagist composer https://packagist.phpcomposer.com

上述命令將會在當前專案中的 composer.json 檔案的末尾自動新增映象的配置資訊(你也可以自己手工新增):

  1. “repositories”: {
  2. “packagist”: {
  3. “type”: “composer”,
  4. “url”: “https://packagist.phpcomposer.com”
  5. }
  6. }

以 laravel 專案的 composer.json 配置檔案為例,執行上述命令後如下所示(注意最後幾行):

  1. {
  2. “name”: “laravel/laravel”,
  3. “description”: “The Laravel Framework.”,
  4. “keywords”: [“framework”, “laravel”],
  5. “license”: “MIT”,
  6. “type”: “project”,
  7. “require”: {
  8. “php”: “>=5.5.9”,
  9. “laravel/framework”: “5.2.*”
  10. },
  11. “require-dev”: {
  12. “fzaninotto/faker”: “~1.4”,
  13. “mockery/mockery”: “0.9.*”,
  14. “phpunit/phpunit”: “~4.0”,
  15. “symfony/css-selector”: “2.8.*|3.0.*”,
  16. “symfony/dom-crawler”: “2.8.*|3.0.*”
  17. },
  18. “autoload”: {
  19. “classmap”: [
  20. “database”
  21. ],
  22. “psr-4”: {
  23. “App\\”: “app/”
  24. }
  25. },
  26. “autoload-dev”: {
  27. “classmap”: [
  28. “tests/TestCase.php”
  29. ]
  30. },
  31. “scripts”: {
  32. “post-root-package-install”: [
  33. “php -r \”copy(‘.env.example’, ‘.env’);\””
  34. ],
  35. “post-create-project-cmd”: [
  36. “php artisan key:generate”
  37. ],
  38. “post-install-cmd”: [
  39. “php artisan clear-compiled”,
  40. “php artisan optimize”
  41. ],
  42. “pre-update-cmd”: [
  43. “php artisan clear-compiled”
  44. ],
  45. “post-update-cmd”: [
  46. “php artisan optimize”
  47. ]
  48. },
  49. “config”: {
  50. “preferred-install”: “dist”
  51. },
  52. “repositories”: {
  53. “packagist”: {
  54. “type”: “composer”,
  55. “url”: “https://packagist.phpcomposer.com”
  56. }
  57. }
  58. }

OK,一切搞定!試一下 composer install 來體驗飛一般的速度吧!

映象說明:

一般情況下,安裝包的資料(主要是 zip 檔案)一般是從 github.com 上下載的,安裝包的後設資料是從packagist.org 上下載的。

然而,由於眾所周知的原因,國外的網站連線速度很慢,並且隨時可能被“牆”甚至“不存在”。

“Packagist 中國全量映象”所做的就是快取所有安裝包和後設資料到國內的機房並通過國內的 CDN 進行加速,這樣就不必再去向國外的網站發起請求,從而達到加速 composer install 以及 composer update 的過程,並且更加快速、穩定。因此,即使 packagist.orggithub.com 發生故障(主要是連線速度太慢和被牆),你仍然可以下載、更新安裝包。

如何安裝 Composer

安裝前請務必確保已經正確安裝了 PHP。開啟命令列視窗並執行 php -v 檢視是否正確輸出版本號。

開啟命令列並執行下列命令安裝最新版本的 Composer (以下指令摘自 https://getcomposer.org/download/ ,請前往檢視最新的安裝指令):

  1. php -r “readfile(‘https://getcomposer.org/installer’);” > composer-setup.php
  2. php composer-setup.php
  3. php -r “unlink(‘composer-setup.php’);”

執行第一條命令下載下來的 composer-setup.php 指令碼將簡單的檢測 php.ini 中的引數設定,如果某些引數未正確設定則會給出警告;然後下載最新版本的 composer.phar 檔案到當前目錄。

上述 3 條命令的作用依次是:

  1. 下載安裝指令碼(composer-setup.php)到當前目錄。
  2. 執行安裝過程。
  3. 刪除安裝指令碼 — composer-setup.php 。

區域性安裝

上述下載 Composer 的過程正確執行完畢後,可以將 composer.phar 檔案複製到任意目錄(比如專案根目錄下),然後通過 php composer.phar 指令即可使用 Composer 了!

全域性安裝

全域性安裝是將 Composer 安裝到系統環境變數 PATH 所包含的路徑下面,然後就能夠在命令列視窗中直接執行 composer 命令了。

Mac 或 Linux 系統:開啟命令列視窗並執行如下命令將前面下載的 composer.phar 檔案移動到/usr/local/bin/ 目錄下面:

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

Windows 系統:

  1. 找到並進入 PHP 的安裝目錄(和你在命令列中執行的 php 指令應該是同一套 PHP)。
  2. 將 composer.phar 複製到 PHP 的安裝目錄下面,也就是和 php.exe 在同一級目錄。
  3. 在 PHP 安裝目錄下新建一個 composer.bat 檔案,並將下列程式碼儲存到此檔案中。
@php "%~dp0composer.phar" %*

最後重新開啟一個命令列視窗試一試執行 composer --version 看看是否正確輸出版本號。

最後

提示:不要忘了經常執行 composer selfupdate 以保持 Composer 一直是最新版本哦!

https://blog.csdn.net/fishermanmax/article/details/51975692