本文参考

一开始安装PHP的时候,我们并不知道需要哪些扩展,所以只有等到我们真正用到的时候才想办法去安装。

安装PHP扩展最简单的办法就是

sudo apt-get install php5-xxx

但有的时候并非我们所愿,源里面并没有我们需要的扩展,这时候就需要我们下载源码自己编译安装了。

这篇文章中我将介绍在本地Linux平台下编译安装PHP扩展的方法。

现在网站根目录下创建 index.php 打印基本的配置信息,以验证我们是否安装成功。

配置编译环境

我们需要安装一些编译必须的库,还有 php-dev 版本

Ubuntu

sudo apt-get install php5-dev php5-mysql gcc libpcre3-dev

Fedora

sudo yum install php-devel php-mysqlnd gcc libtool

RHEL

sudo yum install php-devel php-mysql gcc libtool

Suse

yast2 -i php5-pear php5-devel php5-mysql gcc

安装扩展

PHP有两种可供安装的扩展:一种是PHP原生的但是默认没有安装的,另一种的第三方开发的扩展。

下面依次介绍两种扩展的安装方法:

安装之前我们需要一份和当前机器上相同版本的PHP源码

cd code
wget http://cn2.php.net/distributions/php-5.5.9.tar.bz2
tar xvjf php-5.5.9.tar.bz2
cd php-5.5.9

前往此处 下载相应的源码包。

在 /ext 目录下面可以看到所有PHP原生的扩展。

安装原生扩展

以 PHP-intl 为例,这是PHP国际化的扩展。

为了安装这个扩展我们需要先安装ICU 库

sudo apt-get install icu-devtools icu-doc libicu-dev libicu52 libicu52-dbg

ICU 安装成功之后进入/ext/intl 目录:

cd intl
phpize
./configure --enable-intl
make
sudo make install

下面解释一下上面的每个命令:

  • phpize : 是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块
  • ./configure --enable-intl: 配置编译环境,相当于告诉编译器编译PHP源码的时候加上intl这个扩展。
  • make: 将会把源码编译成 intl.so
  • make install : 将会把 intl.so 移动到当前安装的 PHP 的扩展目录。

接下来我们要做的就是在php.ini中启用这个扩展,这一步将会在最后给出示例。

安装第三方扩展

将以这个 扩展为例,这个扩展主要实现了PHP识别条形码的功能。

先安装必要的依赖

sudo apt-get install pkg-config
git clone https://github.com/mongodb/mongo-php-driver
cd mongo-php-driver
phpize
./configure
make
sudo make install

将会生成一个文件,将其拷贝到PHP的扩展目录下面。

启用扩展

在php.ini中启用扩展的方式有很多:

  1. 直接在php.ini文件中添加 extension=mongo.so,这是最简单直接的方法。
  2. 也可以单独建一个ini文件,然后在php.ini中包含这些文件就可以了。

下面介绍一下第二种方法:

cd `/etc/php5/mods-available`

这个目录里可以放新建的ini文件,然后执行

sudo touch mongo.ini
echo "extension=mongo.so" | sudo tee -a mongo.ini
sudo touch intl.ini
echo "extension=intl.so" | sudo tee -a intl.ini

上面的命令将会创建ini文件,并且写如相应的配置信息。

然后执行下面的命令启用扩展即可(需要安装 php5enmod 工具):

sudo php5enmod mongo
sudo php5enmod intl

如果未安装 php5enmod 工具,则需要手动配置:

ln -s /etc/php5/mods-available/mongo.ini /etc/php5/cli/conf.d/mongo.ini
ln -s /etc/php5/mods-available/intl.ini /etc/php5/cli/conf.d/intl.ini
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/fpm/conf.d/mongo.ini
ln -s /etc/php5/mods-available/intl.ini /etc/php5/fpm/conf.d/intl.ini

最后在执行一下重启操作就可以了:

全选复制放进笔记
sudo service nginx restart
sudo service php5-fpm restart

【转】如何编译安装PHP扩展的更多相关文章

  1. lamp环境编译安装curl扩展

    Linux编译安装php扩展包curl 1.curl,主要用于发送http请求,是php的一个扩展包. 2.安装过程: (1)curl下载:http://curl.haxx.se/download.h ...

  2. 编译安装php-amq扩展

    用途:这个扩展是用来操作rabbitmq服务端的 一.安装总括 1.编译安装librabbitmq库 这是一个开源c语言的库.用来与rabbitmq进行通信 而php的php-amqp扩展就是使用这个 ...

  3. linux下编译安装pthreads扩展

    这里讲的是如何编译安装pthreads,以后编译安装其他PHP扩展可以参考此方法. 下载pthreads源码:http://pecl.php.net/package/pthreads 首先确定安装的p ...

  4. Linux下编译安装PHP扩展redis

    [Redis] 先安装tcl: yum install tcl [下载和安装] 官网http://redis.io/  下载最新的稳定版本,这里是3.2.0, 然后解压文件并进入. $ sudo ta ...

  5. Windows7下采用cygwin编译安装swoole扩展

    常用命令 查看cygwin当前的版本: cygcheck -c cygwin 检查所有安装软件的版本号:cygcheck -c 查看某一个软件安装的版本:cygcheck -c 软件名称 查看本地已经 ...

  6. Linux下单独编译安装PHP扩展包

    首先进入PHP源码目录,比如这个: root@vultr:~/php-/ext/soap# 运行下PHP目录下的phpize,接着就可以和普通代码一样,配置,编译,安装了(注意:有些库可能可以配置参数 ...

  7. Linux下编译安装PHP扩展memcached

    [安装 libevent] $ tar zxvf libevent-2.0.20-stable.tar.gz $ cd libevent-2.0.20-stable/$ ./configure --p ...

  8. Mac Pro 编译安装 PHP扩展 -- Swoole扩展

    回顾下先前的安装笔记: PHP5不重新编译,如何安装自带的未安装过的扩展,如soap扩展? #下载 Swoole-1.8.10后,开始编译# cd /Users/jianbao/Downloads/s ...

  9. 编译安装memcached扩展记要

    编译memcached扩展的时候,得指定libmemcached库的位置 --with-libmemcached-dir=DIR 来指定路径.这个路径就是安装libmemcached时指定的prefi ...

随机推荐

  1. 使用RecyclerView写树形结构的TreeRecyclerView

    简单介绍 android是不提供树形控件的,假设须要使用树形控件.我们应该怎么做呢? 先看效果 上图是一个明显的树形结构 实现原理 在逻辑上,它们是包括关系.数据结构上是多叉树,这是毋庸置疑的. 可是 ...

  2. 打开已存在 Android项目及常见的问题

    Eclipse 打开已存在 Android项目及常见的问题   1.  点击菜单“File”-- "Import",会弹出 Import 对话框:   2,  选择“General ...

  3. 用GDB排查Python程序故障

        某Team在用Python开发一些代码,涉及子进程以及设法消除僵尸进程的需求.实践中他们碰上Python程序非预期退出的现象.最初他们决定用GDB调试Python解释器,查看exit()的源头 ...

  4. Array.prototype.slice.call(arguments) 类数组转成真正的数组

    Array.prototype.slice.call(arguments)   我们知道,Array.prototype.slice.call(arguments)能将具有length属性的对象转成数 ...

  5. Windows 8.1 Hyper-V安装的虚拟机

    一.安装Hyper-v Hyper-V内置于Windows 8中,用户无需格外的下载安装文件,只需要到Windows 8的程序管理中将其选中开启功能即可. 具体步骤:控制面板→程序→启用或关闭Wind ...

  6. Microsoft Office Visio Professional 2007密钥

    Microsoft Office Visio Professional 2007 产品密钥: W2JJW-4KYDP-2YMKW-FX36H-QYVD8

  7. 使用Atomikos Transactions Essentials实现多数据源JTA分布式事务--转载

    原文:http://www.ite/topic/122700 9.17 update:使用NonXADataSourceBean. Mysql在5.0版本和Connecter/J5.0版本后提供了XA ...

  8. [转]为什么python标准库没有实现链表

    实际上刚开始学习一些高级语言的时候我也有同样的疑问,而且即使有链表对应物的语言,链表常常也很少被实际使用.如果是在国外听数据结构的课,老师一般会警告你这只是一个理论概念,实际应用应该实际考察,在通常情 ...

  9. CyclicBarrier 使用说明

    字面意思回环栅栏,通过它可以实现让一组线程等待至某个状态之后再全部同时执行.叫做回环是因为当所有等待线程都被释放以后,CyclicBarrier可以被重用.   主要方法:      public i ...

  10. 关于SWT中的Combo类和List类

    Combo类的谱系图: 一个Combo类的实例: Combo1.java public class Combo1 { public static void main(String[] args) { ...