如何在 Ubuntu 14.04 上安装和使用 Composer
介绍
Composer 是一个流行的 PHP 依赖管理工具,主要是为了方便项目依赖的安装和更新而创建的。它将检查特定项目依赖于哪些其他包,并根据项目要求使用适当的版本为您安装它们。
本教程将展示如何在 Ubuntu 14.04 服务器上安装和开始使用 Composer。
先决条件
对于本教程,您将需要:
- 运行 Ubuntu 14.04 的服务器
- 以具有 sudo 权限的普通用户身份访问服务器
第 1 步 — 安装依赖项
在我们下载和安装 Composer 之前,我们需要确保我们的服务器安装了所有依赖项。
首先,通过运行更新包管理器缓存:
- sudo apt-get update
现在,让我们安装依赖项。我们需要 curl
来下载 Composer 和 php5-cli
来安装和运行它。 git
被 Composer 用于下载项目依赖。一切都可以使用以下命令安装:
- sudo apt-get install curl php5-cli git
您现在可以继续下一步。
第 2 步 — 下载并安装 Composer
Composer 安装非常简单,只需一条命令即可完成:
- curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
这将在 /usr/local/bin
下下载并安装 Composer 作为名为 composer
的系统范围命令。输出应如下所示:
Output#!/usr/bin/env php
All settings correct for using Composer
Downloading...
Composer successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer
要测试您的安装,请运行:
- composer
你应该得到类似于这样的输出:
Output ______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 1.0-dev (9859859f1082d94e546aa75746867df127aa0d9e) 2015-08-17 14:57:00
Usage:
command [options] [arguments]
Options:
--help (-h) Display this help message
--quiet (-q) Do not output any message
--verbose (-v|vv|vvv) Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version (-V) Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
--no-interaction (-n) Do not ask any interactive question
--profile Display timing and memory usage information
--working-dir (-d) If specified, use the given directory as working directory.
. . .
这意味着 Composer 已成功安装在您的系统上。
如果您希望为可能在此服务器上托管的每个项目拥有单独的 Composer 可执行文件,您可以简单地在每个项目的基础上在本地安装它。当您的系统用户无权在系统范围内安装软件时,此方法也很有用。在这种情况下,可以使用 curl -sS https://getcomposer.org/installer | 完成安装。 php
- 这将在您的当前目录中生成一个 composer.phar
文件,可以使用 php composer.phar [command]
执行该文件。
第 3 步 — 生成 composer.json 文件
为了在你的项目中使用 Composer,你需要一个 composer.json
文件。 composer.json
文件基本上告诉 Composer 它需要为您的项目下载哪些依赖项,以及允许安装每个包的哪些版本。这对于保持项目的一致性并避免安装可能导致向后兼容性问题的不稳定版本非常重要。
您不需要手动创建此文件 - 这样做很容易遇到语法错误。当您使用 require
命令向项目添加依赖项时,Composer 会自动生成 composer.json
文件。也可以用同样的方法添加额外的依赖,不需要手动编辑这个文件。
在项目中使用 Composer 将包作为依赖安装的过程通常包括以下步骤:
- 确定应用程序需要什么样的库
- 在 Composer 的官方存储库 Packagist.org 上研究合适的开源库
- 选择你要依赖的包
- 运行
composer require
将依赖项包含在composer.json
文件中并安装包
我们将通过一个简单的演示应用程序了解它在实践中的工作原理。
此应用程序的目标是将给定的句子转换为 URL 友好的字符串 - slug。这通常用于将页面标题转换为 URL 路径(如本教程的 URL 的最后部分)。
让我们从为我们的项目创建一个目录开始。我们称之为 slugify:
- cd ~
- mkdir slugify
- cd slugify
在 Packagist 上搜索包
现在是时候在 Packagist.org 上搜索一个可以帮助我们生成 slugs 的包了。如果你在 Packagist 上搜索术语“slug”,你会得到类似这样的结果:

您会在列表中每个包裹的右侧看到两个数字。顶部的数字表示包被安装了多少次,底部的数字表示包在 GitHub 上被加星标的次数。您可以根据这些数字对搜索结果重新排序(查找搜索栏右侧的两个图标)。一般来说,安装量多、star 多的软件包往往更稳定,因为有很多人在使用它们。检查包裹描述的相关性也很重要——这真的是您要找的东西吗?
我们需要的是一个简单的字符串到 slug 转换器。从搜索结果来看,包 cocur/slugify
似乎是一个很好的匹配,具有合理的安装量和星数。 (该包比屏幕截图显示的页面更靠下。)
您会注意到 Packagist 上的包具有供应商名称和包名称。每个包都有一个唯一标识符(命名空间),其格式与 Github 用于其存储库的格式相同:vendor/package
。我们要安装的库使用命名空间 cocur/slugify
命名空间是我们需要的,以便在我们的项目中要求包。
需要一个包
现在我们确切地知道我们要安装哪个包,我们可以运行 composer require
将其作为依赖项包含进来,并为项目生成 composer.json
文件:
- composer require cocur/slugify
OutputUsing version ^1.3 for cocur/slugify
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Installing cocur/slugify (v1.3)
Downloading: 100%
Writing lock file
Generating autoload files
从输出中可以看出,Composer 自动决定应该使用哪个版本的包。如果您现在检查项目的目录,它将包含两个新文件:composer.json
和 composer.lock
,以及一个 vendor
目录:
- ls -l
Outputtotal 12
-rw-rw-r-- 1 sammy sammy 59 Sep 9 16:22 composer.json
-rw-rw-r-- 1 sammy sammy 2835 Sep 9 16:22 composer.lock
drwxrwxr-x 4 sammy sammy 4096 Sep 9 16:22 vendor
composer.lock
文件用于存储有关每个包的安装版本的信息,并确保在其他人克隆您的项目并安装其依赖项时使用相同的版本。 vendor
目录是项目依赖项所在的位置。 vendor
文件夹不应提交到版本控制中 - 您只需要包含 composer.json 和 composer.lock 文件。
安装已经包含 composer.json
文件的项目时,您需要运行 composer install
以下载项目的依赖项。
了解版本约束
如果您检查 composer.json
文件的内容,您会看到如下内容:
- cat composer.json
- {
- "require": {
- "cocur/slugify": "^1.3"
- }
- }
您可能会注意到 composer.json
版本号前的特殊字符 ^
。 Composer 支持多种不同的约束和格式来定义所需的包版本,以便在提供灵活性的同时保持项目的稳定性。自动生成的 composer.json
文件使用的插入符 (^
) 运算符是推荐的运算符,以实现最大的互操作性,遵循语义版本控制。在这种情况下,它将 1.3 定义为最低兼容版本,并允许更新到 2.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 版本限制,请查看其官方文档。
第 4 步 — 包含自动加载脚本
Composer 还提供了一个自动加载脚本,您可以将其包含在项目中以免费获得自动加载。这使得使用依赖项和定义自己的名称空间变得更加容易。
您唯一需要做的就是在任何类实例化之前将 vendor/autoload.php
文件包含在您的 PHP 脚本中。
让我们回到 slugify 示例应用程序。我们将创建一个 test.php
脚本,我们将在其中使用 cocur/slugify 库:
- vim test.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
这应该会产生输出 hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it
。
第 5 步 — 更新项目依赖项
每当您想更新项目依赖项时,只需运行 update
命令:
- composer update
这将检查项目中所需库的更新版本。如果找到更新的版本并且它与 composer.json
文件中定义的版本约束兼容,它将替换之前安装的版本。 composer.lock
文件将更新以反映这些更改。
您还可以通过运行以下命令更新一个或多个特定库:
- composer update vendor/package vendor2/package2
结论
Composer 是每个 PHP 开发人员都应该拥有的强大工具。
除了提供一种简单可靠的方法来管理项目依赖关系之外,它还建立了一个新的事实标准,用于共享和发现由社区创建的 PHP 包。
本教程涵盖了在 Ubuntu 14.04 上开始使用 Composer 的基础知识。