Debian 11 安装 Composer:详细教程与使用指南

引言

Composer是PHP一款流行的依赖管理工具,主要用于简化项目依赖项的安装和更新。Composer的工作原理是检查特定项目依赖的其他软件包,然后根据项目要求使用适当的版本进行安装。Composer还常用于基于流行的PHP框架(如Symfony和Laravel)创建新项目的引导。

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

先决条件

要按照本教程进行操作,您需要设置一台Debian 11服务器,同时需要一个非root用户并启用sudo权限以及启用防火墙。您可以按照我们的Debian 11初始服务器设置指南来完成此操作。

第一步 – 安装依赖项

除了可能已包含在您的Debian 11系统中的依赖项之外,Composer还需要php-cli来在命令行中执行PHP脚本,并需要unzip来提取压缩文件。

首先更新软件包管理器的缓存。

sudo apt update

接下来,安装依赖项。您需要使用curl来下载Composer和php-cli来安装和运行它。php-mbstring包是必需的,以提供本教程中将使用的库的功能。Composer使用git来下载项目依赖项,而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
输出
55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae

现在执行以下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;"

您的结果将是以下内容。

输出
Installer verified

如果收到一条显示“安装程序损坏”的消息,您需要重新下载安装脚本并验证您是否使用了正确的哈希值。然后再次运行命令验证安装程序。一旦您有了经过验证的安装程序,您就可以继续进行。

要在全局安装Composer,在终端中使用以下命令下载并安装Composer,安装后将把Composer作为系统命令命名为composer,位于/usr/local/bin目录下。

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

您的输出将是以下这些内容。

输出

所有设置均正确,Composer正在下载中……Composer (版本 2.3.10) 已成功安装到: /usr/local/bin/composer。使用方法: php /usr/local/bin/composer

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

  1. composer

 

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

输出

______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 2.3.10 2022-07-13 15:48:23 Usage: 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 命令执行。现在您已经安装了Composer,在下一步中,您将学习如何使用Composer来管理PHP依赖项。

第三步 – 在PHP项目中使用Composer

PHP项目经常依赖于外部库,管理这些依赖库及其版本可能会很棘手。Composer通过跟踪您的依赖关系并使其更易于他人安装,解决了这个问题。

为了在项目中使用Composer,您需要一个 composer.json 文件。composer.json 文件告诉Composer需要为您的项目下载哪些依赖项,以及可安装的每个软件包的版本。这对于保持项目一致性、避免安装可能导致向后兼容性问题的不稳定版本非常重要。

您不需要手动创建这个文件,因为这样做容易出错且可能会导致语法错误。当您使用 composer 命令添加依赖项到您的项目时,Composer会自动生成 composer.json 文件。您可以通过相同的方式添加其他依赖项,无需手动编辑这个文件。

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

  • 识别应用程序需要哪种类型的库。
  • 在Packagist.org(Composer的官方包仓库)上研究合适的开源库。
  • 选择您想要依赖的软件包。
  • 运行 composer require 命令将依赖项添加到 composer.json 文件并安装软件包。

您可以用演示应用程序测试一下。

这个应用的目标是将给定的句子转换为一个适用于URL的字符串,称为“slug”。slug通常用于将页面标题转换为URL路径,例如本教程的URL的最后一部分。

从开始菜单中进入您的用户文件夹:

  1. cd ~

 

然后创建一个名为 slugify 的目录。

  1. mkdir slugify

 

创建完成后,请切换到该目录。

  1. cd slugify

 

现在是时候在Packagist.org上搜索一个能够帮助生成简洁URL的软件包了。如果您在Packagist上搜索“slug”,您会得到一个类似以下的结果。

Packagist Search

列表中的每个软件包右侧会显示两个数字。箭头向下的图标旁边的数字表示该软件包被安装的次数,星星图标旁边的数字表示该软件包在 GitHub 上被标星的次数。您也可以根据这些数字重新排序搜索结果。一般来说,安装次数和标星次数更多的软件包更加稳定,因为有很多人在使用。同时,检查软件包描述也很重要,以确保它符合您的需求。

为了这个教程,您需要一个将字符串转换成slug的工具。从搜索结果来看,cocur/slugify 这个包是一个很好的选择,安装量和星级评价都相当合理。

Packagist上的软件包具有供应商名称和软件包名称。每个软件包都有一个唯一的标识符(命名空间),格式与GitHub用于其代码库的格式相同,为 供应商/软件包。您想要安装的库使用命名空间 cocur/slugify。您需要命名空间以便在您的项目中引用该软件包。

现在您知道要安装的包,运行 composer require 命令来将其作为依赖项包含进来,并生成项目的 composer.json 文件。

  1. composer require cocur/slugify

 

当Composer下载完依赖项时,您的输出将返回以下内容。

输出

使用版本 ^4.1cocur/slugify./composer.json 文件已创建。正在运行 composer update cocur/slugify

加载 Composer 仓库信息。

更新依赖项:

  • 锁定文件操作:1 个安装,0 个更新,0 个移除
  • 锁定 cocur/slugify (v4.1.0)

正在写入锁定文件。

正在从锁定文件安装依赖项(包括开发依赖):

  • 包操作:1 个安装,0 个更新,0 个移除
  • 下载 cocur/slugify (v4.1.0)
  • 安装 cocur/slugify (v4.1.0):正在解压归档文件

正在生成自动加载文件。

根据此输出,Composer 会自动决定要使用的软件包版本。如果您现在检查项目目录,将会包含两个新文件:composer.jsoncomposer.lock,以及一个 vendor 目录。

  1. ls -l
输出

总计 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.lock
  • drwxr-xr-x 4 sammy sammy 4096 Aug 2 22:19 vendor

composer.lock 文件用于存储每个已安装软件包的版本信息。它还确保当有人克隆您的项目并安装其依赖项时,使用的是相同的版本。vendor 目录是项目依赖项的存放位置。vendor 文件夹不需要提交到版本控制中,您只需要包含 composer.jsoncomposer.lock 文件即可。

注意:

在安装一个已经包含 composer.json 文件的项目时,运行 composer install 以下载项目的依赖项。接下来,审查版本约束。如果您检查 composer.json 文件的内容,您会看到如下所示的内容:

  1. cat composer.json
输出

{
  "require": {
    "cocur/slugify": "^4.1"
  }
}

您可能会注意到 composer.json 文件中版本号前面的特殊字符 ^。Composer 支持多种不同的约束和格式来定义所需的软件包版本,以提供灵活性同时保持项目稳定性。自动生成的 composer.json 文件中使用的 ^ 操作符是推荐的操作符,以实现最大的互操作性,遵循语义化版本控制。在这种情况下,它将 4.1 定义为最低兼容版本,并允许更新到未来版本的任何版本,但不超过 5.0。

通常情况下,您不需要修改 composer.json 文件中的版本约束。然而,在某些情况下,您可能需要手动编辑约束。例如,当所需库的一个重大版本发布并且您想要升级时,或者您想要使用的库不遵循语义化版本控制。

这里有一些例子,可以让你更好地理解 Composer 版本限制的工作原理:

约束 (Constraint) 含义 (Meaning) 允许的示例版本 (Example Versions Allowed)
^1.0 >= 1.0 < 2.0 1.0, 1.2.3, 1.9.9
^1.1.0 >= 1.1.0 < 2.0 1.1.0, 1.5.6, 1.9.9
~1.0 >= 1.0 < 2.0.0 1.0, 1.4.1, 1.9.9
~1.0.0 >= 1.0.0 < 1.1 1.0.0, 1.0.4, 1.0.9
1.2.1 1.2.1 1.2.1
1.* >= 1.0 < 2.0 1.0.0, 1.4.5, 1.9.9
1.2.* >= 1.2 < 1.3 1.2.0, 1.2.3, 1.2.9

要对 Composer 版本约束有更深入的了解,请查阅官方文档

第四步 – 引入自动加载脚本

由于 PHP 本身不会自动加载类,Composer 提供了一个自动加载脚本,你可以将其包含在项目中,以使自动加载正常工作。这有助于在处理依赖关系时使用。

只需要在您的 PHP 脚本中,在任何类实例化之前包含 vendor/autoload.php 文件即可。当您添加第一个依赖项时,Composer 会自动生成这个文件。

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

  1. nano test.php

将以下代码添加到项目中,引入 vendor/autoload.php 文件,加载 cocur/slugify 依赖项,并创建 slug。


<?php

require __DIR__ . '/vendor/autoload.php';

use Cocur\Slugify\Slugify;

$slugify = new Slugify();

echo $slugify->slugify('Hello World!'); // 输出: hello-world

?>
<?php
require __DIR__ . '/vendor/autoload.php'; 
use Cocur\Slugify\Slugify;

$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 和回车键来实现。

现在运行脚本。

  1. php test.php

 

这将产生以下输出:

输出

hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it

当新版本发布时,依赖需要更新,所以你将在最后一步学习如何处理它们。

步骤5 — 更新项目依赖

当你想要将项目依赖更新到最新版本时,请运行更新命令。

  1. composer update

 

这将检查您在项目中添加为要求的库的较新版本。如果找到一个较新的版本,并且它与 composer.json 文件中定义的版本限制兼容,Composer 将替换之前安装的版本。composer.lock 文件将被更新以反映这些更改。

您还可以通过以下方式指定更新一个或多个特定的库:

  1. composer update vendor/package vendor2/package2

 

更新依赖后,务必将更改提交到你的 composer.jsoncomposer.lock 文件中,这样项目中的其他人才能得到相同的软件包版本。

结论

Composer 是每个 PHP 开发者都应该拥有的强大工具。在本教程中,你在 Debian 11 上安装了 Composer 并将其用于一个项目中。现在你知道如何安装和更新依赖项了。

除了提供一种可靠的管理项目依赖关系的方法外,Composer 还为共享和发现社区创建的 PHP 包建立了新的标准。

bannerAds