如何在Debian8上安装和使用Composer

来自菜鸟教程
跳转至:导航、​搜索

介绍

Composer是一个流行的PHP依赖管理工具,主要是为了方便项目依赖的安装和更新。 它将检查特定项目所依赖的其他包,并根据项目要求使用适当的版本为您安装它们。

本教程将展示如何在 Debian 8 服务器上安装和开始使用 Composer。

先决条件

对于本教程,您将需要:

  • 一台带有非 root sudo 用户的 Debian 8 服务器,如 使用 Debian 8 的初始服务器设置中所示

第 1 步 — 安装依赖项

在我们下载和安装 Composer 之前,我们需要确保我们的服务器已经安装了所有必要的依赖项。

首先,更新包管理器缓存。

sudo apt-get update

现在,让我们安装依赖项。 我们需要 curl 来下载 Composer 和 php5-cli,一个 PHP 包,用于安装和运行它。 Composer 使用版本控制系统 git 来下载项目依赖项。 您可以使用以下命令一次安装所有这三个包:

sudo apt-get install curl php5-cli git

现在已经安装了基本的依赖项,让我们继续安装 Composer 本身。

第 2 步 — 下载并安装 Composer

我们将按照 Composer 官方文档 中的说明进行少量修改,在 /usr/local/bin 下全局安装 Composer。 这将允许服务器上的每个用户使用 Composer。

将安装程序下载到 /tmp 目录。

php -r "copy('https://getcomposer.org/installer', '/tmp/composer-setup.php');"

访问 Composer 的公钥和签名页面 并复制顶部的 SHA-384 字符串。 然后,通过将 sha_384_string 替换为您复制的字符串来运行以下命令。

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

此命令使用来自 Composer 网站的正确哈希检查您下载的文件的哈希。 如果匹配,它将打印 Installer verify 。 如果不匹配,它将打印 Installer corrupt,在这种情况下,您应该仔细检查您是否正确复制了 SHA-384 字符串。

接下来,我们将安装 Composer。 要在 /usr/local/bin 下全局安装它,我们将使用 --install-dir 标志; --filename 告诉安装程序 Composer 的可执行文件的名称。 以下是如何在一个命令中执行此操作:

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

您将看到如下消息:

OutputAll settings correct for using Composer
Downloading...

Composer (version 1.3.2) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

您可以通过检查 Composer 的版本来验证是否正确安装了 Composer。

composer --version

您应该会看到已安装的版本。 在撰写本文时,版本为:

作曲家版本

Composer version 1.3.2 2017-01-27 18:23:41

最后,您可以安全地删除不再需要的安装程序脚本。

rm /tmp/composer-setup.php

Composer 现在已设置并运行,等待您的项目使用。 在下一部分中,您将生成 composer.json 文件,其中包括您的项目所依赖的 PHP 库。

第三步——生成 composer.json 文件

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

您无需手动创建此文件; 如果这样做,很容易遇到语法错误。 当您使用 require 命令向项目添加依赖项时,Composer 会自动生成 composer.json 文件。 也可以用同样的方式添加额外的依赖项,而不需要手动编辑这个文件。

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

  • 确定应用程序需要什么样的库
  • 在 Composer 的官方存储库 Packagist.org 上研究一个合适的开源库
  • 选择你要依赖的包
  • 运行 composer require 以在 composer.json 文件中包含依赖项并安装包

我们将通过一个简单的演示应用程序来了解这在实践中是如何工作的。

此应用程序的目标是将给定的句子转换为 slug,这是一个 URL 友好的字符串。 这用于将页面标题转换为 URL 路径(如本教程的 URL 的最后部分)。

让我们首先为项目创建一个目录。 我们称之为 slugify

cd ~
mkdir slugify
cd slugify

接下来,让我们搜索我们需要使用的库。

在 Packagist 上搜索包

接下来,我们将在 Packagist 中搜索一个包来帮助生成 slug。 如果你搜索“slug”,你会看到一个包列表。 在列表中每个软件包的右侧,您会看到两个数字:顶部的数字是软件包的安装次数,底部的数字表示软件包在 GitHub 上的星标次数。

一般来说,安装数和星数较多的软件包往往更稳定,因为很多人都在使用它们。 检查包裹描述以确保包裹确实是您正在寻找的东西也很重要。

我们需要的是一个简单的 string-to-slug 转换器。 作为示例,我们将使用包 cocur/slugify。 这似乎是一个很好的匹配,因为它有相当数量的装置和星星。

您会注意到 Packagist 上的包具有供应商名称和包名称。 每个包都有一个唯一标识符(命名空间),其格式与 GitHub 用于其存储库的格式相同:vendor/package。 我们要安装的库使用命名空间 cocur/slugify。 命名空间是我们在项目中需要包时所需要的。

现在我们确定了我们想要的库,让我们将它添加到 composer.json 文件中。

需要一个包

我们可以运行 composer require 以将库作为依赖项包含在内,并为项目生成 composer.json 文件:

composer require cocur/slugify
OutputUsing version ^2.3 for cocur/slugify
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing cocur/slugify (v2.3) Downloading: 100%         
Writing lock file
Generating autoload files

从输出中可以看出,Composer 自动决定应该使用哪个版本的包。 如果您现在检查项目的目录,它将包含两个新文件:composer.jsoncomposer.lock,以及一个 vendor/ 目录:

ls -l
Outputtotal 12
-rw-r--r-- 1 sammy sammy   59 Feb  1 13:43 composer.json
-rw-r--r-- 1 sammy sammy 2896 Feb  1 13:43 composer.lock
drwxr-xr-x 4 sammy sammy 4096 Feb  1 13:43 vendor

composer.lock 文件用于存储有关每个包的安装版本的信息,并确保在其他人克隆您的项目并安装其依赖项时使用相同的版本。 vendor/ 目录是项目依赖所在的位置。 vendor/ 文件夹不应提交到版本控制中; 您只需要包含 composer.jsoncomposer.lock 文件。

注意: 安装已经包含composer.json文件的项目时,需要运行composer install才能下载项目的依赖。


您可能会注意到 composer.lock 文件包含有关我们项目所依赖的 PHP 库版本的特定信息。 Composer 使用特殊语法将库限制为特定版本。 让我们看看它是如何工作的。

了解版本约束

如果您检查 composer.json 文件的内容,您会看到如下内容:

cat composer.json

输出

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

在版本号之前有一个插入符号 ^。 Composer 支持多种不同的约束和格式来定义所需的包版本,以便在提供灵活性的同时保持项目的稳定性。 自动生成的 composer.json 文件使用的插入符运算符是推荐的运算符,以实现最大互操作性,遵循语义版本控制。 在这种情况下,它将 1.3 定义为最低兼容版本,并允许更新到 2.0 以下的任何未来版本。 您可以在 Composer 的版本控制文档 中阅读有关版本基本原理的更多信息。

到目前为止,我们已经了解了如何使用 Composer 使用 composer.json 文件添加和限制我们的项目所需的 PHP 库。 下一步是在我们的应用程序中实际使用这些库。 为此,Composer 提供了 autoload.php 文件,该文件有助于加载外部库的过程。

第 4 步 — 包括自动加载脚本

Composer 提供了一个自动加载脚本,您可以将其包含在项目中以免费获得自动加载。 这使得使用依赖项和定义自己的命名空间变得更加容易。 您唯一需要做的就是在任何类实例化之前在您的 PHP 脚本中包含 vendor/autoload.php 文件。

让我们回到 slugify 示例应用程序。 使用 nano 或您喜欢的文本编辑器,创建一个 test.php 脚本,我们将在其中使用 cocur/slugify 库。

nano test.php

测试.php

<?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!');

您可以使用以下命令在命令行中运行脚本:

php test.php

这应该产生输出:

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

您已经完全设置了 Composer,但请继续阅读以了解如何维护安装。

第 5 步 — 更新 Composer 和项目依赖项(可选)

要更新 Composer 本身,您可以使用它提供的内置命令 self-update。 由于 Composer 是全局安装的,因此您需要以 root 权限运行该命令。

sudo -H composer self-update

您可以通过 composer update 专门列出一个或多个特定库来更新它们。

composer update namespace/package

如果要更新所有项目依赖项,请运行 update 命令。

composer update

这将检查您项目中所需的库的较新版本。 如果找到较新的版本并且它与 composer.json 文件中定义的版本约束兼容,它将替换以前安装的版本。 composer.lock 文件将更新以反映这些更改。

结论

Composer 是每个 PHP 开发人员都应该拥有的强大工具。 除了提供一种简单可靠的方式来管理项目依赖项之外,它还为共享和发现社区创建的 PHP 包建立了一个新的事实标准。

在本教程中,我们简要介绍了 Composer 的基础知识:如何安装它,如何创建项目并为其查找包,以及如何维护它。 要了解更多信息,您可以浏览 官方 Composer 文档