首先要安装编译php时要的几个扩展库

(1)libxml2,若无php安装一些解析xml的扩展时会提示xml2-config not found

  1. sudo apt-get install libxml2 libxml2-dev libxslt-dev

(2)libevent1.4.11及以上版本,安装php的fpm模块时需要

  1. sudo apt-get install libevent-1.4-2 libevent-dev

(3)libcurl,安装curl扩展需要

  1. sudo apt-get install libcurl4-openssl-dev

(4)GD库,安装gd图片处理扩展需要

  1. sudo apt-get install libgd2-xpm libgd2-xpm-dev

(5)zlib1g-dev,安装zlib和bz2扩展或编译mysqld阶段需要

  1. sudo apt-get install zlib1g-dev libbz2-dev

(6) configure: error: mcrypt.h not found. Please reinstall libmcrypt.

  1. sudo  apt-get install libmcrypt-dev

编译参数:

  1. sudo ./configure --prefix=/usr/local/php --mandir=/usr/share/man --infodir=/usr/share/info --sysconfdir=/etc --enable-cli --with-config-file-path=/usr/local/php/etc --with-openssl --with-kerberos --with-zlib --enable-bcmath --with-bz2 --enable-calendar --with-curl --enable-exif --enable-ftp --with-gd --enable-gd-native-ttf --enable-magic-quotes --enable-mbstring --enable-mbregex --enable-json --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql-sock=mysqlnd --with-sqlite --with-pdo-sqlite --enable-pdo --enable-dba --enable-shmop --enable-soap --enable-sockets --enable-wddx --enable-fpm --with-mhash --with-mcrypt=/usr/local/libmcrypt --with-iconv --with-xsl --enable-zend-multibyte --enable-zip --with-pcre-regex --enable-dom --enable-gd-native-ttf --enable-posix --enable-fileinfo --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-libxml --with-xmlrpc --enable-xml --enable-xmlwriter --enable-xmlreader --enable-maintainer-zts --enable-debug

说明:如果是apache,请加上

-with-apxs2=/usr/local/apache/bin/apxs

–enable-maintainer-zts 支持apache的worker或event这两个MPM

说明:这里为了支持apache的worker或event这两个MPM,编译时使用了–enable-maintainer-zts选项。

# 注:其中最后一个参数–enable-maintainer-zts在安装PHP5.4最新版本时必须添加(5.3貌似不需要),表示打开PHP进程安全Thread Safe,默认不添加为NON Thread Safe,开启apache服务会报错…..

编译通过就执行安装过程

    1. sudo make -j 4
    2. sudo make install

      今天尝试了我的第一个php扩展开发,记录下过程以及遇到的问题

      一、环境准备

      以前我已经用以下命令安装过php了

      1. $ sudo apt-get install php5

      其安装位置是

      1. $ whereis php
      2. php: /usr/bin/php /usr/lib/php /usr/bin/X11/php /usr/share/man/man1/php.1.gz

      这种方式安装的php并不能直接进行php扩展开发,我们还需要

      (1)安装php5-dev,不然没有编译扩展需要的phpize

      1. $ sudo apt-get install php5-dev
      1. $ whereis phpize
      2. phpize: /usr/bin/phpize /usr/bin/X11/phpize /usr/share/man/man1/phpize.1.gz

      (2)下载php5源码, 我准备保存在 ~/code/ 目录下

      1. $ cd ~/code/
      2. $ sudo apt-get source php5

      下载的文件如下

      1. $ ls
      2. php5-5.4.9                         php5_5.4.9-4ubuntu2.dsc
      3. php5_5.4.9-4ubuntu2.debian.tar.gz  php5_5.4.9.orig.tar.xz

      二、生成扩展骨架文件
      进入php的ext目录

      1. $ cd ~/code/php5-5.4.9/ext/

      执行一下命令

      1. $ ./ext_skel --extname=xw

      发现没有ext下权限没有权限创建目录,于是修改ext目录的权限

      1. $ chmod 0777 ~/code/php5-5.4.9/ext

      再次执行

      1. $ ./ext_skel --extname=xw

      ext下正常生成了xw目录,但目录中没有c文件,这和网络上教程所说有些不一样啊,仔细看了看命令的输出,发现有些报错说一些文件没有找到

      1. cannot open /skeleton.c: No such file

      vim 打开ext_skel文件

      搜索“skeleton.c”,得

      1. sed -f sedscript < $skel_dir/skeleton.c > $extname.c

      继续搜索“skel_dir”

      1. if test -z "$skel_dir"; then
      2. skel_dir="/usr/lib/php5/<span style="font-family: Arial, Helvetica, sans-serif;">"</span>
      3. fi

      原来是这个路径,查看我的电脑确实没有这个目录,那搜索一下是否是在其他地方呢

      1. $ locate /skeleton
      2. /usr/share/php5/skeleton

      这个路径应该是可以配置的,试试help看看

      1. $ ./ext_skel --help
      2. ./ext_skel --extname=module [--proto=file] [--stubs=file] [--xml[=file]]
      3. [--skel=dir] [--full-xml] [--no-help]
      4. --extname=module   module is the name of your extension
      5. --proto=file       file contains prototypes of functions to create
      6. --stubs=file       generate only function stubs in file
      7. --xml              generate xml documentation to be added to phpdoc-cvs
      8. --skel=dir         path to the skeleton directory
      9. --full-xml         generate xml documentation for a self-contained extension
      10. (not yet implemented)
      11. --no-help          don't try to be nice and create comments in the code
      12. and helper functions to test if the module compiled

      明白了,修改原来的命令,增加--skel参数再次执行

      1. $ ./ext_skel --extname=xw --skel=/usr/share/php5/skeleton

      ok了,生成的文件正常了

      三、编译扩展

      进入xw目录 ,vim config.m4 把

      1. dnl PHP_ARG_ENABLE(xw, whether to enable xw support,
      2. dnl Make sure that the comment is aligned:
      3. dnl [  --enable-xw           Enable xw support])

      这3行前面的“dnl”注释去掉,变成

      1. PHP_ARG_ENABLE(xw, whether to enable xw support,
      2. Make sure that the comment is aligned:
      3. [  --enable-xw           Enable xw support])

      依次执行

      1. $ phpize
      2. $ ./configure
      3. $ make
      4. $ sudo make install

      若执行成功了,会显示

      1. Installing shared extensions:     /usr/lib/php5/20100525/

      这时你在 /usr/lib/php5/20100525/ 目录找到 xw.so

      四、修改php配置,运行检测

      修改php.ini 配置文件,把xw.so扩展加入进去(这个就多不多说了)。若你不知道ini文件在哪,可以执行以下命令查看

      1. $ php -ini

      重启后,执行

      1. $ php -r 'echo confirm_xw_compiled("xw"),"\n";'

      若你能看到如下输出则你的扩展编译安装配置成功了

      1. Congratulations! You have successfully modified ext/xw/config.m4. Module xw is now compiled into PHP.

      其实,这句话就是xw.c里面函数返回给php的,你可以找到,并尝试修改它,然后重复 make和make install 步骤
      函数confirm_xw_compiled()是扩展骨架自带的一个自定义函数,是一个例子,也可用于检查是否安成功安装了扩展。其中“xw”是扩展名

php扩展开发环境搭建的更多相关文章

  1. 基于Visual c++ 2012的php扩展开发 - 环境搭建

    软件准备 Apache2.4 php-5.6.20-Win32-VC11-x86 php-5.6.20-src mysql-5.5.45-win32 vcredist_x86.exe vs2012旗舰 ...

  2. Eclipse中Python开发环境搭建

    Eclipse中Python开发环境搭建  目 录  1.背景介绍 2.Python安装 3.插件PyDev安装 4.测试Demo演示 一.背景介绍 Eclipse是一款基于Java的可扩展开发平台. ...

  3. python学习之python开发环境搭建

    Python简介 Python是一种面向对象.解释型计算机程序设计语言.Python语法简洁而清晰,具有丰富和强大的类库等等众多的特性,这是来自百度百科的介绍,在百度百科还能看到它的更详细的介绍信息, ...

  4. (转载)JAVA敏捷开发环境搭建

    整个软件项目分为四个环境 开发本地环境.开发环境.测试环境.IDC环境.和传统C++开发不一样的模式是多了第一个开发本地环境.这是为什么呢,因为目前大部分开发人员还是比较熟悉windows下开发.对于 ...

  5. C++学习之开发环境搭建篇(一)

    由于C++是一门非跨平台语言,其开发的程序编译生成的可执行文件,只能在相应的操作系统中被执行,离开此系统环境将无法执行. 主要原因是不同的操作系统,可执行文件的结构不同,最为常见的操作系统是有:MAC ...

  6. (转)微信公众平台开发之基于百度 BAE3.0 的开发环境搭建(采用 Baidu Eclipse)

    原文传送门(http://blog.csdn.net/bingtianxuelong/article/details/17843111) 版本说明:     V1:         2014-2-13 ...

  7. iOS开发教程之:iPhone开发环境搭建

    安装条件: 硬件:一台拥有支持虚拟技术的64位双核处理器和2GB以上内存的PC. 注意:运行MAC OS,需要电脑支持虚拟技术(VT),安装时,需要将VT启动,在BIOS中开启. 软件: Window ...

  8. SDL2.0的VS开发环境搭建

    SDL2.0的VS开发环境搭建 [前言] 我是用的是VS2012,VS的版本应该大致一样. [开发环境搭建] >>>SDL2.0开发环境配置:1.从www.libsdl.org 下载 ...

  9. 转:Windows下的PHP开发环境搭建——PHP线程安全与非线程安全、Apache版本选择,及详解五种运行模式。

    原文来自于:http://www.ituring.com.cn/article/128439 Windows下的PHP开发环境搭建——PHP线程安全与非线程安全.Apache版本选择,及详解五种运行模 ...

随机推荐

  1. sysbench安装for oracle

    RHEL7.2+ 1.依赖包安装 * autoconf * automake * cdbs * debhelper (>= 9) * docbook-xml * docbook-xsl * li ...

  2. 创建假的wifi热点

    本帖介绍怎么创建假的wifi热点,然后抓取连接到这个wifi用户的敏感数据.我们还会给周围的无线路由器发送未认证的包,使这些路由器瘫痪,强迫用户连接(或自动连接)我们创建的假wifi热点. 这种攻击也 ...

  3. [转载] PHP升级导致系统负载过高问题分析

    原文:http://chuansongme.com/n/797172 背景 据XX部门兄弟反应, 其在将PHP从5.3.8 升级到5.5.13 时, 开始运行正常, 运行一段时间后, 系统负载变高,达 ...

  4. Hadoop2.7.1安装与配置

    Hadoop2.7.1集群环境的搭建 s204.s205是我的两台服务器hostname,可以用你对应的ip或者hostname代替 工具/原料   jdk.ssh免登录 方法/步骤   1 首先去A ...

  5. Linux 简单按键中断处理流程

    中断处理程序中不能延时.休眠之类的,一定要最快速.高效的执行完. // 功能:申请中断 // 参数1:中断号码,通过宏 IRA_EINT(x) 获取 // 参数2:中断的处理函数,填函数名 // 参数 ...

  6. Object-C 多线程中锁的使用-NSLock

    在多线程的编程环境中,锁的使用必不可少! 于是,今天来总结一下为共享资源加锁的操作方法.   一.使用synchronized方式   //线程1 dispatch_async(dispatch_ge ...

  7. Linux:远程连接 SSH

    一.认识 SSH 定义 SSH(Secure shell):安全外壳协议:是建立在应用层基础上的安全协议: 通过 SSH 进行服务端连接,不容易被窃取信息: 连接服务器 ssh 服务器名 + @ + ...

  8. MYSQL数据库索引类型都有哪些?

    索引类型: B-TREE索引,哈希索引•B-TREE索引加速了数据访问,因为存储引擎不会扫描整个表得到需要的数据.相反,它从根节点开始.根节点保存了指向子节点的指针,并且存储引擎会根据指针寻找数据.它 ...

  9. Annotation之三:自定义注解示例,利用反射进行解析

    @Retention定义了该Annotation被保留的时间长短有3中RetentionPolicy.SOURCE源文件有效,RetentionPolicy.CLASS:在class文件中有效,Ret ...

  10. 复制书稿(book) (二分,贪心+dp)

    复制书稿(book) 时间限制: 1 Sec  内存限制: 128 MB提交: 3  解决: 1[提交][状态][讨论版][命题人:quanxing] 题目描述 现在要把m本有顺序的书分给k个人复制( ...