如何在Ubuntu 18.04上安装和使用PHP Composer

时间:2020-03-05 15:32:06  来源:igfitidea点击:

Composer是PHP的依赖项管理器(类似于Node.js的npm或者Python的pip)。

Composer将提取我们项目所依赖的所有必需PHP软件包,并为我们管理它们。

在本教程中,我们将向我们展示如何在Ubuntu 18.04计算机上安装和使用Composer。
相同的步骤可用于Ubuntu 16.04.

准备工作

在继续本教程之前,请确保我们以具有sudo特权的用户身份登录,并且已在Ubuntu 18.04系统上安装了PHP。

安装PHP Composer

如果我们赶时间并且不想验证文件的完整性,请向下滚动至“ Installing Composer-快速方法”部分。

要在Ubuntu系统上安装Composer,请执行以下步骤:

  • 在下载和安装Composer之前,首先更新程序包索引并安装必要的要求:
sudo apt updatesudo apt install wget php-cli php-zip unzip
  • 现在我们已经在计算机上安装了php cli,我们可以使用以下命令下载composer安装程序:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

上面的命令会将'composer-setup.php'文件下载到当前工作目录中。

  • 接下来,我们需要通过比较脚本'SHA-384'哈希与Composer公钥/签名页面上的最新安装程序哈希来验证脚本的数据完整性。我们将使用以下wget命令下载预期的签名: Composer的Github页面上的最新Composer安装程序,并将其存储在名为'HASH'的变量中:
HASH="$(wget -q -O - https://composer.github.io/installer.sig)"

现在,运行以下命令来验证安装脚本是否未损坏:

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安装脚本,并使用'echo $HASH'再次检查'$HASH'变量的值。

验证安装程序后,我们可以继续下一步。

  • 以下命令将Composer安装在“/usr/local/bin”目录中:
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
All settings correct for using Composer
Downloading...
Composer (version 1.8.5) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

“ composer”作为系统级命令安装,将对所有用户可用。

  • 最后一步是验证安装:
composer

上面的命令将打印Composer的版本,命令和参数。

______
/____/___  ____ ___  ____  ____  ________  _____
///__ \/__ `__ \/__ \/__ \/___/_ \/___/
//___//_////////_///_/(__  )  __//
____/____/_//_//_/.___/____/____/___/_/
                    /_/
Composer version 1.8.5 2019-04-09 17:46:47
Usage:
    command [options] [arguments]

如果要按项目安装Composer,请使用以下命令“ php composer-setup.php”,该命令将在当前工作目录中创建一个名为“ composer.phar”的文件。
我们可以通过运行'./composer.phar <command>'使用composer。

安装Composer [快速方法]

使用以下命令在Ubuntu系统上快速安装Composer:

  • 安装PHP CLI和Zip:
sudo apt update && sudo apt install wget php-cli php-zip unzip curl
  • 下载带有curl的Composer:
curl -sS https://getcomposer.org/installer |php
  • 将Composer文件移动到“/usr/local/bin”目录:
sudo mv composer.phar /usr/local/bin/composer

Composer入门

现在,在Ubuntu系统上已经安装了Composer,我们将向我们展示如何在PHP项目中使用Composer。

第一步是创建一个目录,该目录将成为项目的根目录,并保存“ composer.json”文件。
该文件描述了PHP项目,包括PHP依赖关系和其他元数据。

创建项目目录并使用以下命令切换到该目录:

mkdir ~/my-first-composer-projectcd ~/my-first-composer-project

下一步是使用“ composer require <程序包名称>”命令初始化一个新的“ composer.json”,并指定我们要下载的程序包。

在此示例中,我们将创建一个示例应用程序,该应用程序将使用名为carbon的包来打印当前时间。

运行以下命令以初始化新的'composer.json'并安装carbon软件包:

composer require nesbot/carbon
Using version ^1.33 for nesbot/carbon
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 3 installs, 0 updates, 0 removals
  - Installing symfony/polyfill-mbstring (v1.9.0): Downloading (100%)
  - Installing symfony/translation (v4.1.4): Downloading (100%)
  - Installing nesbot/carbon (1.33.0): Downloading (100%)
symfony/translation suggests installing symfony/config
symfony/translation suggests installing symfony/yaml
symfony/translation suggests installing psr/log-implementation (To use logging capability in translator)
Writing lock file
Generating autoload files

从上面的输出中可以看到,Composer将创建'composer.json'文件,并将下载并安装carbon及其所有依赖项。

如果列出项目的目录,我们将看到它包含两个文件'composer.json'和'composer.lock'以及一个'vendor'目录。

ls -l
-rw-r--r-- 1 theitroad users   60 Aug 29 00:50 composer.json
-rw-r--r-- 1 theitroad users 6.8K Aug 29 00:50 composer.lock
drwxr-xr-x 5 theitroad users 4.0K Aug 29 00:50 vendor
  • “ vendor”目录是存储项目依赖项的目录。
  • “ composer.lock”包含所有已安装软件包的列表,包括软件包的版本。
  • “ composer.json”描述了PHP项目和所有PHP依赖项。

我们可以在Composer存储库Packagist中搜索PHP软件包。

Composer提供了自动加载功能,使我们可以使用PHP类,而无需“需要”或者“包含”文件。

创建一个名为“ testing.php”的文件,并添加以下代码:

<?php
require __DIR__ . '/vendor/autoload.php';
use Carbon\Carbon;
printf("Now: %s", Carbon::now());

让我们逐行分析代码。

在打开php标记后的第一行中,我们包含了由Composer自动生成的“ vendor/autoload.php”文件,该文件将自动加载所有库。

接下来,我们将'Carbon \ Carbon'别名为'Carbon',并在最后一行中使用Carbon'now'方法打印当前时间。

通过键入以下命令来运行脚本:

php testing.php

输出应如下所示:

Now: 2016-08-28 23:47:19

稍后,如果我们想更新PHP软件包,则可以简单地运行:

composer update

上面的命令将检查已安装软件包的较新版本,如果找到了较新版本,并且版本约束与'composer.json'中指定的版本匹配,则Composer将更新该软件包。