本文由composer教程欄目給大家介紹關于在debian11上是怎么一步步安裝,以及使用composer的 ,非常詳細哦~希望對需要的朋友有所幫助!
Composer是一個流行的php依賴性管理工具,主要是為了方便項目依賴性的安裝和更新。Composer的工作原理是檢查一個特定項目所依賴的其他軟件包,然后根據項目要求使用適當的版本為你安裝它們。Composer也常用于引導基于流行的PHP框架的新項目,如symfony和laravel。
在本指南中,你將在 Debian 11 服務器上安裝和使用 Composer。
前提條件
要學習本教程,你需要設置一臺 Debian 11 服務器,包括一個非根用戶sudo 并啟用防火墻。你可以按照我們的Debian 11 初始服務器設置指南來做。
第一步 – 安裝依賴項
除了可能已經包含在您的 Debian 11 系統中的依賴項之外,Composer 需要php-cli 來在命令行中執行 PHP 腳本,以及unzip 來提取壓縮文件。
首先要更新軟件包管理器的緩存。
sudo apt update
接下來,安裝依賴項。你將需要cURL 來下載Composer,需要php-cli 來安裝和運行它。php-mbstring 包是必要的,它為你在本教程中要使用的一個庫提供功能。git 被Composer用來下載項目依賴,而unzip 是用來提取壓縮包的。所有東西都可以用下面的命令來安裝。
sudo apt install curl php-cli php-mbstring git unzip
安裝好所有的依賴項后,現在你可以安裝Composer了。
第二步 – 下載和安裝Composer
Composer提供了一個用PHP編寫的安裝程序。你將下載它,確認它沒有損壞,然后用它來安裝Composer。
首先,確保你在你的主目錄中。
cd ~
然后,使用curl 檢索安裝程序。
curl -sS https://getcomposer.org/installer -o composer-setup.php
接下來,驗證安裝程序是否與Composer公鑰/簽名頁面上的最新安裝程序的SHA-384哈希值一致。為了方便驗證步驟,你可以使用下面的命令,以編程方式從composer頁面獲取最新的哈希值,并將其存儲在一個shell變量中。
HASH=`curl -sS https://composer.github.io/installer.sig`
要輸出獲得的值,請運行。
echo $HASH
Output55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae復制代碼
現在執行以下PHP代碼,如Composer下載頁面中提供的,以驗證安裝腳本是否可以安全運行。
php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
你的輸出將是以下內容。
OutputInstaller verified
如果你收到的信息是Installer corrupt ,你需要再次下載安裝腳本并驗證你使用的是正確的哈希值。然后運行命令,再次驗證安裝程序。一旦你有一個經過驗證的安裝程序,你就可以繼續了。
要在全局范圍內安裝composer ,使用下面的命令下載并安裝Composer作為全系統的命令,命名為composer 在/usr/local/bin 。
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
你的輸出將是以下內容。
OutputAll settings correct for using Composer Downloading... Composer (version 2.3.10) successfully installed to: /usr/local/bin/composer Use it: php /usr/local/bin/composer
通過運行這個命令測試你的安裝。
composer
然后你的輸出將顯示Composer的版本和參數,類似于下面的內容。
Output ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ / __ `__ / __ / __ / ___/ _ / ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / ____/____/_/ /_/ /_/ .___/____/____/___/_/ /_/ Composer version 2.3.10 2022-07-13 15:48:23Usage: command [options] [arguments] Options: -h, --help Display help for the given command. When no command is given display help for the list command -q, --quiet Do not output any message -V, --version Display this application version --ansi|--no-ansi Force (or disable --no-ansi) ANSI output -n, --no-interaction Do not ask any interactive question --profile Display timing and memory usage information --no-plugins Whether to disable plugins. --no-scripts Skips the execution of all scripts defined in composer.json file. -d, --working-dir=WORKING-DIR If specified, use the given directory as working directory. --no-cache Prevent use of the cache -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug. . .
這就驗證了Composer已經成功地安裝在你的系統上,并且在整個系統中是可用的。
**注意:**如果你喜歡為你在這臺服務器上托管的每個項目都有單獨的Composer可執行文件,你可以以每個項目為基礎在本地安裝它。npm的用戶將熟悉這種方法。當你的系統用戶沒有權限在全系統安裝軟件時,這種方法也很有用。
要做到這一點,請使用命令php composer-setup.php 。這將在你的當前目錄下生成一個composer.phar 文件,可以用 ./composer.phar command.
現在你已經安裝了Composer,在下一步你將學習如何使用Composer來管理PHP的依賴性。
第3步 – 在PHP項目中使用Composer
PHP項目經常依賴外部庫,而管理這些依賴關系和它們的版本可能很棘手。Composer通過跟蹤你的依賴關系并使其他人更容易安裝它們來解決這個問題。
為了在你的項目中使用Composer,你需要一個composer.json 文件。composer.json 文件告訴Composer它需要為你的項目下載的依賴項,以及允許安裝的每個包的版本。這對于保持你的項目的一致性和避免安裝不穩定的版本而可能導致向后兼容性問題是非常重要的。
你不需要手動創建這個文件,因為這樣做很容易出錯,可能會導致語法錯誤。當你使用composer require 命令向你的項目添加一個依賴關系時,Composer會自動生成composer.json 文件。你可以用同樣的方法添加額外的依賴關系,而不需要手動編輯這個文件。
使用Composer在項目中安裝一個包作為依賴的過程包括以下步驟。
- 確定應用程序需要什么樣的庫。
- 在Packagist.org(Composer的官方軟件包庫)上研究一個合適的開源庫。
- 選擇你想依賴的軟件包。
- 運行composer require ,在composer.json 文件中包含該依賴性,并安裝該軟件包。
你可以用一個演示應用程序來測試一下。
這個應用程序的目標是將一個給定的句子轉換成一個叫做slug的URL友好字符串。slug通常用于將頁面標題轉換為URL路徑,例如本教程中URL的最后部分。
首先導航到你的主目錄。
cd ~
然后創建一個目錄。將其稱為slugify 。
mkdir slugify
創建完畢后,換到該目錄中。
cd slugify
現在是時候在Packagist.org上搜索一個可以幫助生成蛞蝓的軟件包。如果你在Packagist上搜索 “slug “這個詞,你會得到一個與下面類似的結果。
列表中每個軟件包的右側會有兩個數字。箭頭朝下的圖標旁邊的數字代表該軟件包被安裝了多少次,而帶星形圖標的數字代表軟件包在GitHub上被加了多少次星。你還可以根據這些數字對搜索結果重新排序。一般來說,安裝次數多、星級多的軟件包往往更穩定,因為有很多人在使用它們。檢查軟件包的描述是否相關也很重要,以確保它是你所需要的。
對于這個教程,你需要一個字符串到蛞蝓的轉換器。從搜索結果來看,軟件包cocur/slugify 是一個很好的匹配,有合理數量的安裝和星級。
Packagist上的軟件包有一個供應商名稱和一個軟件包名稱。每個包都有一個唯一的標識符(命名空間),其格式與GitHub用于其存儲庫的格式相同,即 vendor/package.你要安裝的庫使用命名空間cocur/slugify 。你需要這個命名空間,以便在你的項目中需要該包。
現在你知道了你要安裝的軟件包,運行composer require ,把它作為一個依賴項包括進去,同時為項目生成composer.json 文件。
composer require cocur/slugify
當Composer下載依賴關系時,你的輸出將返回如下。
OutputUsing version ^4.1 for cocur/slugify ./composer.json has been created Running composer update cocur/slugify Loading composer repositories with package information Updating dependencies Lock file operations: 1 install, 0 updates, 0 removals - Locking cocur/slugify (v4.1.0) Writing lock file Installing dependencies from lock file (including require-dev) Package operations: 1 install, 0 updates, 0 removals - Downloading cocur/slugify (v4.1.0) - Installing cocur/slugify (v4.1.0): Extracting archive Generating autoload files
正如這個輸出所表明的,Composer會自動決定使用哪個版本的軟件包。如果你現在檢查你的項目目錄,它將包含兩個新文件:composer.json 和composer.lock ,以及一個vendor 目錄。
ls -l
Outputtotal 12-rw-r--r-- 1 sammy sammy 59 Aug 2 22:19 composer.json-rw-r--r-- 1 sammy sammy 3462 Aug 2 22:19 composer.lockdrwxr-xr-x 4 sammy sammy 4096 Aug 2 22:19 vendor
composer.lock 文件是用來存儲每個已安裝軟件包的版本信息的。它也確保在別人克隆你的項目并安裝其依賴項時使用相同的版本。vendor 目錄是項目依賴項所在的地方。vendor 文件夾不需要提交到版本控制中,你只需要包括composer.json 和composer.lock 文件。
當安裝一個已經包含composer.json 文件的項目時,運行composer install ,以便下載項目的依賴項。
接下來,查看版本約束。如果你檢查你的composer.json 文件的內容,你會有類似下面的內容。
cat composer.json
Output{ "require": { "cocur/slugify": "^4.1" }}
你可能會注意到在composer.json 的版本號之前有一個特殊的字符^ 。Composer支持幾種不同的約束和格式來定義所需的軟件包版本,以提供靈活性,同時也保持你的項目穩定。自動生成的composer.json 文件所使用的圓點(^)運算符是推薦的運算符,以實現最大的互操作性,遵循語義版本學。在這種情況下,它將4.1定義為最小兼容版本,并允許更新到5.0以下的任何未來版本。
一般來說,你不需要在你的composer.json 文件中篡改版本約束。然而,有些情況可能需要你手動編輯約束。例如,當你所需要的庫的一個主要新版本發布時,你想要升級,或者當你想要使用的庫不遵循語義版本劃分時。
下面是一些例子,讓你更好地了解Composer版本約束的工作方式。
約束 | 意義 | 允許的版本示例 |
---|---|---|
^1.0 | >= 1.0 | 1.0, 1.2.3, 1.9.9 |
^1.1.0 | >= 1.1.0 | 1.1.0, 1.5.6, 1.9.9 |
~1.0 | >= 1.0 | 1.0, 1.4.1, 1.9.9 |
~1.0.0 | >= 1.0.0 | 1.0.0, 1.0.4, 1.0.9 |
1.2.1 | 1.2.1 | 1.2.1 |
1.* | >= 1.0 | 1.0.0, 1.4.5, 1.9.9 |
1.2.* | >= 1.2 | 1.2.0, 1.2.3, 1.2.9 |
要想更深入地了解Composer的版本約束,請查閱官方文檔。
接下來,你將學習如何用Composer自動加載依賴項。
第四步 – 包括自動加載腳本
由于PHP本身不會自動加載類,Composer提供了一個自動加載腳本,你可以把它包含在你的項目中,讓自動加載發揮作用。這在處理你的依賴關系時很有幫助。
你唯一需要做的是在任何類實例化之前在你的PHP腳本中包含vendor/autoload.php 文件。這個文件在你添加第一個依賴項時由Composer自動生成。
你可以在你的應用程序中測試它。創建該文件test.php ,并在你喜歡的文本編輯器中打開它。這里使用的是nano 。
nano test.php
添加以下代碼,引入vendor/autoload.php 文件,加載cocur/slugify 依賴關系,并創建一個slug。
test.php
<?php require __DIR__ . '/vendor/autoload.php'; use CocurSlugifySlugify;$slugify = new Slugify();echo $slugify->slugify('Hello World, this is a long sentence and I need to make a slug from it!');
保存該文件并退出你的編輯器。如果你使用的是nano ,你可以按CTRL + X ,然后按Y 和ENTER 來完成。
現在運行該腳本。
php test.php
這將產生以下輸出。
Outputhello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it
當新版本出來時,依賴關系需要更新,所以你將在最后一步中學習如何處理這個問題。
第5步 – 更新項目的依賴關系
每當你想把你的項目依賴關系更新到最新的版本時,運行update 命令。
composer update
這將檢查你在項目中作為需求添加的庫的較新版本。如果發現一個新的版本,并且它與composer.json 文件中定義的版本約束兼容,Composer將替換之前安裝的版本。composer.lock 文件將被更新以反映這些變化。
你也可以像下面這樣指定一個或多個特定的庫來更新它們。
composer update vendor/package vendor2/package2
請確保在你更新你的依賴關系后提交你的composer.json 和composer.lock 文件的變化,這樣無論誰在項目中工作,都可以訪問相同的軟件包版本。
總結
Composer是每個PHP開發者都應該擁有的強大工具。在本教程中,你在 Debian 11 上安裝了 Composer 并在一個項目中使用了它。你現在知道如何安裝和更新依賴關系了。
除了提供一個可靠的方法來管理項目的依賴關系外,Composer 還建立了一個新的標準來分享和發現由社區創建的 PHP 包。