前言
composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。composer 不是一个包管理器。它在每个项目的基础上进行管理,在你项目的某个目录中进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。
composer 将这样为你解决问题:
- 你有一个项目依赖于若干个库。
-
其中一些库依赖于其他库。
-
你声明你所依赖的东西。
-
composer 会找出哪个版本的包需要安装,并安装它们(将它们下载到你的项目中)。
今天使用php7下的mongodb的扩展。不仅要安装mongodb和mongodb php扩展,还要安装mongodb php的类库。而这个类库,需要用composer来安装。于是,就要先学习composer的安装和用法了。
下载和调试
composer的官网:https://getcomposer.org/
系统要求:PHP 5.3.2+
下载 composer.phar
cd /usr/local/src/php-composer
curl -sS https://getcomposer.org/installer | php
这个下载并不一定顺利。如果下载不成功,请多尝试几次。如果还是不行,可以到官网手动下载composer.phar。
在https://getcomposer.org/download/ ,找到 Manual Download,这里有其所有的版本。可以选择最新的版本下载, 当前最新版本是 1.4.1。
cd /usr/local/src/php-composer
wget https://getcomposer.org/download/1.4.1/composer.phar
将下载好的文件复制到php的 /bin/ 目录下,因为这个目录已经建立过环境变量,全局都可以访问。然后执行 composer.phar看看结果。
cp composer.phar /data/server/php/bin/composer.phar
composer.phar
一波未平,一波又起。这个时候可能会报错:
-bash: /data/server/php/bin/composer.phar: Permission denied
看错误是权限问题,给他权限不就可以了。然后再执行 composer.phar 。
chmod 777 /data/server/php/bin/composer.phar
composer.phar
终于,看到想看的信息了。如下图。
使用-下载库安装
本来,期待着 composer request 能有作用。request的过程,就是生成 composer.json 。发现出错的情况很多,根本request不到。这个和 node.js 的npm比,体验差多了。既然 request不好使,那就自己手动建立 composer.json (该文件包含了项目的依赖和其它的一些元数据),然后安装吧。
注意一点。先进入项目根目录。项目根目录或根目录的下级目录。这里是创建composer.json的地方。也是通过composer.json 安装库文件的地方。
很多库下载的速度特慢甚至下载不下来(海外的)。这个时候,可用 composer镜像网站 的方法来解决。网站提供了两种方式。
- 修改 composer 的全局配置文件(推荐方式)。执行下边的命令。
composer config -g repo.packagist composer https://packagist.phpcomposer.com
- 修改当前项目的 composer.json 配置文件。进入你的项目的根目录(也就是 composer.json 文件所在目录),执行如下命令:
composer config repo.packagist composer https://packagist.phpcomposer.com
上述命令将会在当前项目中的 composer.json 文件的末尾自动添加镜像的配置信息(你也可以自己手工添加):
"repositories": {
"packagist": {
"type": "composer",
"url": "https://packagist.phpcomposer.com"
}
}
比如,mongodb的composer.json:
{
"name": "mongodb/mongodb",
"description": "MongoDB driver library",
"keywords": ["database", "driver", "mongodb", "persistence"],
"homepage": "https://jira.mongodb.org/browse/PHPLIB",
"license": "Apache-2.0",
"authors": [
{ "name": "Hannes Magnusson", "email": "bjori@mongodb.com" },
{ "name": "Jeremy Mikola", "email": "jmikola@gmail.com" },
{ "name": "Derick Rethans", "email": "github@derickrethans.nl" }
],
"require": {
"php": ">=5.4",
"ext-mongodb": "^1.2.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8"
},
"autoload": {
"psr-4": { "MongoDB\\": "src/" },
"files": [ "src/functions.php" ]
},
"autoload-dev": {
"psr-4": { "MongoDB\\Tests\\": "tests/" }
},
"extra": {
"branch-alias": {
"dev-master": "1.2.x-dev"
}
},
"repositories": {
"packagist": {
"type": "composer",
"url": "https://packagist.phpcomposer.com"
}
}
}
配置好composer.json后(加了镜像),执行 composer install
。果然好用,反应快,速度也快。
使用-在项目中
<?php
require_once __DIR__ . "/vendor/autoload.php";
……
?>