1. 云栖社区>
  2. PHP教程>
  3. 正文

PHP的扩展安装

作者:用户 来源:互联网 时间:2017-12-01 20:55:49

php安装扩展

PHP的扩展安装 - 摘要: 本文讲的是PHP的扩展安装,实在是不得已,php最简单的安装扩展,我也基本不会。。。以前倒是做过,但是毕竟搞开发的,都是往上搜索,照着教程,一键安装。加之,开发,只搞代码,就够让人受的了,服务器的命令忘记的差不多,一般不太愿意搞服务器。现在,公司没有运维,必须得搞搞,

实在是不得已,php最简单的安装扩展,我也基本不会。。。
以前倒是做过,但是毕竟搞开发的,都是往上搜索,照着教程,一键安装。加之,开发,只搞代码,就够让人受的了,服务器的命令忘记的差不多,一般不太愿意搞服务器。现在,公司没有运维,必须得搞搞,另外,作为PHPer,安装个 PHP 扩展,居然还要往上搜索各种教程,而教程又是各种混乱。。
这篇博客的目的,就是自己走一遍整个流程,我是需要在 Linux 下,PHP使用 mongodb,以此为例,总结:
1.既然得使用 mongodb,系统得先安装这个工具。我没有通过源码安装,那个过程可能也很痛苦,直接yum安装:
yum -y install mongodb
/*
安装mongodb扩展,发现有2个:
mongo
mongodb
区别:
mongo 这个扩展已经废弃了,不过 bug 和 security 方面的问题还会继续修复,不支持PHP7
mongodb 支持PHP7,同时不断加入 MongoDB 新版本的特性支持
且两个扩展提供的类和接口完全不一样
*/
2.有了 mongodb,开始安装 php 相应的扩展(这也是这篇教程的主体内容)
1>下载最新的 php mongodb 扩展源码
http://pecl.php.net/package/mongodb
2>看出来了吧,是放在 'pecl' 上的,这里得引出2个PHPer应该知道的东西(我之前真的已经看过N多次这些文章了,当时真心记忆的很好,现在真心是一点都想不起来)
PEAR - PHP扩展与应用库(the PHP Extension and Application Repository)
是一个PHP扩展及应用的代码仓库,纯粹由PHP代码编写。就是别人帮我们用PHP写了一些工具,图像处理、文件上传等,我们直接在我们项目中使用即可。
PECL - PHP扩展库(PHP Extension Community Library)
提供了一系列已知的扩展库,由C、C++等其他语言编写,以 '.so' 形式出现。'.so' 为共享库,是share object,用于动态链接。和 'dll' 差不多,比 'PEAR' 更快。(因为非PHP代码,需要在服务器上配置并注册到主机中)
PHP的标准扩展,可以补充实际开发中所需的功能,所有的扩展都需要安装,windows下以 'DLL',linux下,需要进行编译,生成 '.so' 二进制
最直接的表述:
PEAR 是PHP的上层扩展,用过PHP来写的扩展
PECL 是PHP的底层扩展,PHP可能不支持的一些操作系统底层的功能,通过C写个扩展,对PHP语言本身,进行了扩充(个人理解)
综上所属,我们就知道了扩展PHP有2种方法:
1.纯粹使用 PHP 代码来编写函数和类 - 其实也就是我们自己平常写的应用层代码。例如,写了一个 论坛、商城,或者 图片上传库、Excel导入导出的类库。PEAR就是这样的一个平台,其他人可以将自己的代码发布上来,主页:pear.php.net
2.用C、C++等编写外部模块,然后加载到 PHP 中,对PHP进行了扩充(也可能通过php现有的已经可以实现,但是可能更快)。PECL就是这样一个平台,主页是:pecl.php.net
参考文章:
http://blog.csdn.net/21aspnet/article/details/158961
3>打开 'http://pecl.php.net/package/mongodb',我们可以下载 'mongodb' 的PHP扩展包了。上方的包信息,homepage - 主页链接,我们点开,查看 'mongodb' 官方关于PHP Mongo扩展的一些介绍
https://docs.mongodb.com/ecosystem/drivers/php/
里面有:
MongoDB PHP 扩展库的文档
MongoDB PHP 和 HHVM 扩展库的文档
MongoDB相关的一些兼容性
MOngoDB扩展的几个类库(Mongo Queue PHP,Mongo PHP Adapter,Mongodm,Yadm),Mongo 可用的不同场景的扩展吧
框架整合:
Drupal,laravel,Yii2等
4>我们只看第一个,MongoDB PHP扩展库:https://docs.mongodb.com/php-library/master/
安装部分:https://docs.mongodb.com/php-library/master/tutorial/install-php-library/
/*
翻译:
*/
安装 MongoDB PHP 扩展库
前提:
MongoDB PHP库是MongoDB PHP驱动的高级抽象。 因此,您必须安装mongodb扩展以使用库。
安装教程,链接到了PHP手册:http://php.net/manual/en/mongodb.installation.php
步骤:
1.安装库
安装MongoDB PHP库的首选方法是在项目根目录,使用composer来安装:
composer require mongodb/mongodb
你可能也想通过源码包,来手动安装包,代码在 'github' 上 'https://github.com/mongodb/mongo-php-library/releases',不推荐这种方式安装
2.配置自动加载
一旦安装了库,确保我们的应用中,包含 Composer 的自动加载文件。'require_once' 语句应该,引入 Composer 的自动加载文件:
require_one __DIR__ . '/vendor/autoload.php';
可查看 Composer 的自动加载文档 'https://getcomposer.org/doc/01-basic-usage.md#autoloading'
3.如果我们手动从源码包,安装库,需要手动来配置自动加载:
1>使用你喜欢的自动加载实现,将顶级的 'MongoDB/' 命名空间指向 'src/' 目录
2>手动 'require' 'src/functions.php' 文件,因为,PHP不支持函数自动加载
5>打开PHP手册的mongodb的安装教程
Installing the MongoDB PHP Driver with PECL - 通过 'PECL' 来安装
Installing the MongoDB PHP Driver on OSX with Homebrew - max下通过 'brew' 来安装
Installing the MongoDB PHP Driver on Windows - windows下安装
Manually Installing the MongoDB PHP Driver - 手动安装 mongodb php 扩展(可以安装最新版本,从github上获取)
Manually Installing the MongoDB HHVM Driver - 手动安装 mongodb hhvm 驱动
6>我们从 'PECL' 安装:
首先会发现一个 'PECL扩展库' 的安装 - http://php.net/manual/zh/install.pecl.intro.php
PECL库,被称为共享扩展库(share object,也称动态扩展库),必须经过 编译、安装、然后加载。为什么称为共享呢,我们都知道windows下是 '.dll',linux下是 '.so',只要我们编译过,同样的环境和版本下,我们直接可以复制编译好的来使用。而且,不同于直接编译到PHP中的模块,我们可以使用 'dl()' 来动态加载。
dl() - 在5.3版本,被某些SAPI移除了,现在貌似一直都支持。
静态扩展库 - 直接编译在PHP中
1)下载 PECL 扩展库
1.pecl install 扩展库 - pear 命令
2.在http://pecl.php.net/ 平台上,搜索我们想要安装的扩展库,然后下载
3.pecl download 扩展库 - pear 命令
4.SVN下载,大多数 PECL 扩展库也在SVN中,web页面,可查看 'http://svn.php.net/viewvc/pecl/'。从SVN下载,可用:
svn checkout http://svn.php.net/repository/pecl/extname/trunk extname
2)用PEAR编译共享PECL扩展库
PECL 使建立共享 PHP 扩展库更容易。用 pecl 命令(好像命令都是pear的命令,pecl好像也是用pear来管理)
1.pecl install 扩展库 // 下载扩展库源代码 -> 编译 -> 并将 扩展库.so 安装到 'extension_dir' 目录下
2.然后,我们就可在php.ini中,添加上 '.so' 扩展库
默认情况下,pecl不会安装 'alpha' 或 'beta' 版本的包,如果没有 'stable' 版本的包可用,我们也可以安装 'beta' 版:
pecl install extname-beta // beta版
也可以安装一个指定的版本:
pecl install extname-0.1 // 指定版本
3)用 phpize 编译共享 PECL 扩展库
有时候,不能用pecl安装命令。可能是因为防火墙,或想要安装的扩展库还没有 PECL 兼容的包,例如 SVN 中尚未发布的扩展库。如果要编译这种扩展库,可以用更底层的编译工具来手工进行编译。
phpize 命令,是用来准备PHP扩展库的编译环境的。我们说明下,使用 phpize 编译扩展库的步骤:
1.下载扩展库,并解压,假设目录为 mongodb
2.cd mongodb
3.phpize // 准备编译环境
4. ./configure // 生成makefile
5.make // 编译
6.make install // 安装
生成的 mongodb.so,放在PHP的 'extension_dir - 扩展库目录'
7.vim php.ini ,添加上 mongodb.so
4)php-config
php-config 是一个简单的命令行脚本用于获取所安装的 PHP 配置的信息。
在编译扩展时,如果安装有多个 PHP 版本,可以在配置时用 --with-php-config 选项来指定使用哪一个版本编译,该选项指定了相对应的 php-config 脚本的路径。
php-config -h // 查看命令行选项
--prefix PHP 所安装的路径前缀,例如 /usr/local
--includes 列出用 -I 选项包含的所有文件
--ldflags PHP 编译时所使用的 LD 标志
--libs PHP 编译时所附加的库
--extension-dir 扩展库的默认路径
--include-dir 头文件的默认路径前缀
--php-binary PHP CLI 或者 CGI 可执行文件的完整路径
--php-sapis 列出所有可用的 SAPI 模块
--configure-options 重现当前 PHP 在编译时的配置选项
--version PHP 版本号
--vernum PHP 版本号,以整数表示
5)将 PECL 扩展库,静态编译到 PHP 中
有时可能需要将扩展库静态编译到 PHP 中。这需要将扩展库源程序放入 php-src/ext/ 目录中去并告诉 PHP 编译系统来生成其配置脚本(php编译的扩展模块目录:/usr/local/php/include/php/ext/ --- 这个地址不对,应该是下载的PHP源码时,自带的扩展目录)
1>下载mongodb源码
1.cd /usr/local/php/include/php/ext/ --- 这个地址不对,应该是下载的PHP源码时,自带的扩展目录
2.pecl download mongodb
3.gzip -d < mongodb-1.2.8.tgz | tar -xvf -
4.mv mongodb-1.2.8 mongodb
2>强制PHP重新生成配置脚本,然后正常编译PHP
cd /usr/local/php/include/php/ext/
rm configure
./buildconf --force
./configure --help
./configure --with-mongodb --enable-其他扩展 --with-其他扩展
make make install
3>是否用 --enable-extname 或 --with-extname 取决于扩展库。通常不需要外部库文件的扩展库使用 --enable。要确认的话,在 buildconf 之后运行:
./configure --help | grep extname 搜到一个有点用的文章,参考地址:
http://wiki.jikexueyuan.com/project/extending-embedding-php/5.3.html
关于PEAR和PECL的命令,相关性,还是不清楚,有时间再看下,暂留:
通过 PEAR 的 Package Manager 的安装管理方式,可以对 PECL 模块进行下载和安装
http://baike.baidu.com/link?url=nVTwiCXUdXdlfux5Dch5WGjS1EufPMFbzJajJO1aT3nnCDl9D1mLNaZfv17J87b1_vBG_FlrxKHkNl1G1IhXTa - 可参考百度百科的这篇文章
http://pear.php.net/manual/en/guide.users.commandline.cli.php

http://blog.csdn.net/hguisu/article/details/7381978

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php , 安装 扩展 ,以便于您获取更多的相关知识。

弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

现在注册,免费体验40+云产品,及域名优惠!

云服务器9.9元/月,大学必备