如何在 Debian 11 上安装和使用 Composer

介绍

Composer是 PHP 的一种流行的依赖管理工具,主要用于方便项目依赖的安装和更新。Composer 通过检查具体项目依赖的其他软件包,然后根据项目要求为您安装相应的版本。Composer 也常用来启动基于流行的 PHP 框架的新项目,如 SymfonyLaravel

在本指南中,您将在 Debian 11 服务器上安装和使用 Composer。

前提条件

要遵循本教程,您将需要一个 Debian 11 服务器设置,包括一个非root sudo功能的用户和启用防火墙。

步骤 1 - 安装依赖

除了可能已经包含在您的 Debian 11 系统中的依赖之外,Composer 还需要php-cli来执行命令行中的 PHP 脚本,以及unzip来提取 zip 档案。

首先,更新包管理器的缓存:

1sudo apt update

接下来,安装依赖程序. 你需要弯曲来下载Composer和php-cli来安装和运行它. php-mbstring包是必要的,以提供您将在本教程中使用的库的功能。 git是由Composer用于下载项目依赖程序,而unzip是用于提取包。

1sudo apt install curl php-cli php-mbstring git unzip

有了所有依赖程序的安装,您现在可以安装 Composer。

步骤 2 – 下载和安装 Composer

Composer 提供一个以 PHP 编写的 installer,您将下载它,验证它没有被破坏,然后使用它来安装 Composer。

首先,确保你在你的家庭目录:

1cd ~

然后,使用curl来获取安装程序:

1curl -sS https://getcomposer.org/installer -o composer-setup.php

接下来,请验证安装程序是否匹配了 Composer Public Keys / Signatures页面上发现的最新安装程序的 SHA-384 哈希。

1HASH=`curl -sS https://composer.github.io/installer.sig`

要输出所获得的值,运行:

1echo $HASH
1[secondary_label Output]
255ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae

现在,按照Composer 下载页面提供的下面的PHP代码执行,以验证安装脚本是否安全运行:

1php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

您的输出将如下:

1[secondary_label Output]
2Installer verified

如果你收到一个消息说安装程序破坏,你需要下载安装脚本再次,并验证你使用正确的哈希.然后运行命令再次验证安装程序。

若要在全球范围内安装composer,请使用以下命令下载和安装Composer作为名为composer的整个系统命令在/usr/local/bin下:

1sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

您的输出将如下:

1[secondary_label Output]
2All settings correct for using Composer
3Downloading...
4
5Composer (version 2.3.10) successfully installed to: /usr/local/bin/composer
6Use it: php /usr/local/bin/composer

通过运行此命令来测试您的安装:

1composer

然后,输出将显示 Composer 的版本和参数,类似于以下:

 1[secondary_label Output]
 2  ______
 3  / ____/___ ____ ___ ____ ____ ________ _____
 4 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
 5/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
 6\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
 7                    /_/
 8Composer version 2.3.10 2022-07-13 15:48:23
 9
10Usage:
11  command [options] [arguments]
12
13Options:
14  -h, --help Display help for the given command. When no command is given display help for the list command
15  -q, --quiet Do not output any message
16  -V, --version Display this application version
17      --ansi|--no-ansi Force (or disable --no-ansi) ANSI output
18  -n, --no-interaction Do not ask any interactive question
19      --profile Display timing and memory usage information
20      --no-plugins Whether to disable plugins.
21      --no-scripts Skips the execution of all scripts defined in composer.json file.
22  -d, --working-dir=WORKING-DIR If specified, use the given directory as working directory.
23      --no-cache Prevent use of the cache
24  -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
25. . .

这验证了 Composer 已成功安装在您的系统上,并在整个系统中可用。

<$>[note] 注: 如果您喜欢为您托管在该服务器上的每个项目设有单独的 Composer 执行程序,您可以本地安装它,每个项目的基础上。

要做到这一点,请使用php composer-setup.php命令,在当前目录中生成一个composer.phar文件,可以用./composer.phar命令执行。

现在你已经安装了 Composer,下一步你将学习如何使用 Composer 来管理 PHP 依赖。

步骤 3 — 在 PHP 项目中使用 Composer

PHP 项目往往依赖于外部库,管理这些依赖和它们的版本可能很困难. Composer 通过跟踪您的依赖来解决这个问题,并使其他人更容易安装它们。

要在您的项目中使用 Composer,您需要一个 composer.json 文件。 composer.json 文件告诉 Composer 需要为您的项目下载的依赖,以及允许安装的每个软件包的版本。

您不需要手动创建此文件,因为这样做容易出现错误,并可能导致语法错误。Composer在使用composer require命令为项目添加依赖时,会自动生成composer.json文件。

使用 Composer 作为项目中的依赖程序安装包的过程包括以下步骤:

  • 确定应用程序需要哪种类型的库。
  • Packagist.org上搜索合适的开源库,该库是Composer的官方包库。
  • 选择您想要依赖的包。 *运行composer require以将依赖包含在composer.json文件中,然后安装包。

您可以通过Demo应用程序来测试这一点。

该应用程序的目的是将一个特定的句子转换成一个称为 slug 的 URL 友好的字符串,一个 slug 通常用于将页面标题转换为 URL 路径,例如本教程的 URL 最终部分。

开始导航到您的家庭目录:

1cd ~

然后创建一个目录,称之为slugify:

1mkdir slugify

完成创建后,更改到目录:

1cd slugify

现在是时候搜索 Packagist.org 找一个可以帮助生成 slugs 的包. 如果你在 Packagist 上搜索slug 术语,你会得到类似于以下的结果:

Packagist Search

在列表中,每个包的右侧将有两个数字。向下指示箭头的图标旁边的号码代表了该包安装了多少次,星座图标的号码代表了该包在 GitHub上被标记了多少次)。你也可以根据这些号码重新排序搜索结果。一般来说,具有更多安装和更多星星的包往往更稳定,因为有这么多人正在使用它们。

对于本教程,你需要一个 string-to-slug 转换器. 从搜索结果中,包 cocur/slugify是一个很好的匹配,有合理的数量的安装和星星。

Packagist 上的包有 **供应商名称和 ** 包的名称.每个包都有一个独特的标识符(一个名称空间)在 GitHub 用于其存储库的相同格式中,以供应商/包的形式。

现在你知道你要安装的软件包,运行composer require,将其列入成依赖,并为该项目生成composer.json文件:

1composer require cocur/slugify

您的输出将在 Composer 下载依赖时返回以下内容:

 1[secondary_label Output]
 2Using version ^4.1 for cocur/slugify
 3./composer.json has been created
 4Running composer update cocur/slugify
 5Loading composer repositories with package information
 6Updating dependencies
 7Lock file operations: 1 install, 0 updates, 0 removals
 8  - Locking cocur/slugify (v4.1.0)
 9Writing lock file
10Installing dependencies from lock file (including require-dev)
11Package operations: 1 install, 0 updates, 0 removals
12  - Downloading cocur/slugify (v4.1.0)
13  - Installing cocur/slugify (v4.1.0): Extracting archive
14Generating autoload files

如果您现在检查您的项目目录,它将包含两个新文件: composer.jsoncomposer.lock,以及一个 供应商 目录:

1ls -l
1[secondary_label Output]
2total 12
3-rw-r--r-- 1 sammy sammy 59 Aug 2 22:19 composer.json
4-rw-r--r-- 1 sammy sammy 3462 Aug 2 22:19 composer.lock
5drwxr-xr-x 4 sammy sammy 4096 Aug 2 22:19 vendor

composer.lock文件用于存储有关每个安装的软件包的版本的信息,并且确保在其他人克隆您的项目并安装其依赖性时使用相同的版本。 供应商目录是项目依赖性所在的位置。 供应商文件夹不需要参与版本控制,您只需要包含composer.jsoncomposer.json锁文件。

<$>[注] 在安装已包含 composer.json 文件的项目时,请运行 composer install 以下载该项目的依赖性。

接下来,检查版本限制. 如果你检查你的 composer.json 文件的内容,你会得到这样的东西:

1cat composer.json
1[secondary_label Output]
2{
3    "require": {
4        "cocur/slugify": "^4.1"
5    }
6}

在composer.json中,您可能会在版本号之前注意到特殊字符 ^。Composer 支持多个不同的限制和格式来定义所需的包版本,以便提供灵活性,同时保持项目稳定性。由自动生成的 composer.json 文件使用的 caret (^`) 操作员是建议的操作员,以实现最大限度的互操作性,然后是 语义版本

一般来说,您不需要在composer.json文件中对版本限制进行篡改,但有些情况可能需要您手动编辑该限制,例如,当您发布所需库的主要新版本并想要升级时,或者当您想要使用的库不遵循语义版本。

以下是几个例子,以便您更好地了解 Composer 版本限制如何工作:

ConstraintMeaningExample Versions Allowed
^1.0>= 1.0 < 2.01.0, 1.2.3, 1.9.9
^1.1.0>= 1.1.0 < 2.01.1.0, 1.5.6, 1.9.9
~1.0>= 1.0 < 2.0.01.0, 1.4.1, 1.9.9
~1.0.0>= 1.0.0 < 1.11.0.0, 1.0.4, 1.0.9
1.2.11.2.11.2.1
1.*>= 1.0 < 2.01.0.0, 1.4.5, 1.9.9
1.2.*>= 1.2 < 1.31.2.0, 1.2.3, 1.2.9

有关 Composer 版本限制的更深入的观点,请查看 官方文档

接下来,您将学习如何使用 Composer 自动加载依赖。

步骤 4 – 包括 Autoload 脚本

由于PHP本身不会自动加载类,因此Composer提供了自动加载脚本,您可以将其纳入项目中,以便自动加载工作。

您唯一需要做的就是在任何类型的实例化之前,在您的PHP脚本中添加vendor/autoload.php文件。

您可以在您的应用程序中测试它,创建test.php文件,并在您喜欢的文本编辑器中打开它。

1nano test.php

添加以下代码来输入vendor/autoload.php文件,加载cocur/slugify依赖,然后创建 slug:

1[label test.php]
2<?php
3require __DIR__ . '/vendor/autoload.php'; 
4use Cocur\Slugify\Slugify;
5
6$slugify = new Slugify();
7
8echo $slugify->slugify('Hello World, this is a long sentence and I need to make a slug from it!');

如果您正在使用nano,您可以通过按CTRL + X,然后按YENTER来做到这一点。

现在运行剧本:

1php test.php

这产生了以下产出:

1[secondary_label Output]
2hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it

当新版本发布时,依赖需要更新,因此您将在最后一步中学习如何处理。

步骤 5 – 更新项目依赖性

每当您想要将项目依赖性更新到更新的版本时,请运行更新命令:

1composer update

这将检查您在项目中添加的库的更新的版本作为要求。如果发现了更新的版本,并且它与composer.json文件中定义的版本限制相兼容,Composer 将取代之前安装的版本。

您也可以通过以下方式指定一个或多个特定库来更新它们:

1composer update vendor/package vendor2/package2

请确保在更新依赖性后对您的composer.jsoncomposer.lock文件进行更改,以便在项目中工作的任何人都可以访问相同的软件包版本。

结论

Composer 是一个强大的工具,每个 PHP 开发人员都应该在他们的工具带中。 在本教程中,你在 Debian 11 上安装了 Composer,并在一个项目中使用了它。

除了提供可靠的方式来管理项目依赖之外,Composer还为共享和发现社区创建的PHP包设立了新的标准。

Published At
Categories with 技术
Tagged with
comments powered by Disqus