最近做的一个项目要部署到阿里云的ECS上,系统为centos6.5,部署上去以后以后发现项目无法运行,查看了下php的版本,发现是5.3的,这个也是阿里云的yum源中的php版本,不支持新项目中 [ ]定义数组的方式,修改代码代价太大,所以就考虑着替换高版本php,去官网看了下,发现最新版本为5.6.25,一直也没机会整理一下,借此次机会,整理一下编译的步骤.(比较多,建议ctrl+s弄下来慢慢看) 如仅仅是想查询具体的编译安装方式 或者扩展安装 可以直接拉到最下面去 本文将会持续整理
下面是传送门
第一部分 基本参数详解 >>传送门<<
第二部分 内置扩展与依赖包详解 >>传送门<<
第三部分 三方扩展详解
第四部分 常用安装步骤
注意
本文比较长,所列出的绝大部份东西实际学习中基本不会接触 为了方便学习 将按使用程度标出 红色标注的区域为重要部分 绿色为可选
需要说明的是 --enable --disable --with --without参数 开关扩展都是通过这几个参数指定的 后边我会详细讲解
第一部分 基本参数详解
####目录配置####
--prefix=prefix 设置安装路径 默认为/usr/local
以下安装参数基本不用,贴出来的原因在于帮助理解安装后目录下的各个文件夹的作用
--exec-prefix=dir 设置关联文件的安装路径 默认为--prefix参数设置的文件夹 一般不设置 所以会发现安装后的文件在prefix指定的文件夹中
--bindir=dir 设置可执行文件的安路径 也就是bin目录
--sbindir=dir 设置系统服务的安装路径 也就是sbin目录
--libdir=dir 扩展文件目录 也就是lib目录
--sysconfdir=dir 设置配置文件目录 也就是etc目录
--libexecdir=dir 设置可执行的扩展文件目录 也就是libexec目录
--sharedstatedir=dir 可修改的数据目录 也就是com目录
--localstatedir=dir 本地数据目录 也就是var目录
--includedir=dir c语言文件 也就是include目录
--oldincludedir=dir gcc目录 一般在/usr/include下
--datarootdir=dir 只读目录 也就是share目录 一些说明和文档信息
--datadir=dir 数据目录 share目录下的
--infodir=dir info目录 一般在share目录下的info
--localedir=dir 本地文件路径 share/kicake
--mandir=dir man路径share/man
--docdir=dir doc路径 share/doc
--htmldir=dir html路径 share/doc
--divdir=dir dvi路径 share/doc
--pdfdir=dir pdf路径 share/doc
--psdir 补充说明文件路径 share/doc
####编译系统配置####
--build= 设置编译路径
--host= 设置编译的主机ip
--target= 目标编译器host
####可选功能及软件包####
--disable-option-checking 忽略未识别的
如不指定该参数 编译时遇到不识别的指令将会退出 每个版本的参数语法都可能会发生少许改变 除非足够自信 否则建议不要开启这个
--disable-FEATRUE 不包含特征 同 --enable-FEATURE=no
--enable-FEATRUE 与上条相反 默认是yes
--with-PACKAGE 使用包 默认是yes
--without-PACKAGE 与上条相反
--with-libdir=dir 设置依赖包的目录 如果某个扩展所需的依赖包在该目录无法找到 则需要手动设置
--disable-rpath 禁止搜索动态库
--enable-re2c-cgoto 允许使用-g参数去使用gcc的扩展
####SAPI模块####
##APACHE配置##
--with-apxs= apache1.x版本的共享模块所存放的路径 apxs是apache的一个工具 可以用来为apache生产模块 与我后边要讲的phpize很相似 这里用它将php打包成apache的一个运行模块 一般在apache安装目录的bin目录下 某些系统自带的则在/usr/sbin目录下 找不到可以通过find命令搜索 find / -name apxs
--with-apache=dir apache1.x版本的模块 设置apache的顶级目录
--with-caudium=DIRcaudium服务器的目录
--with-apxs2filter=FILE 编译apache2.0的共享过滤模块,这里设定为apache apxs工具的路径
--with-apxs2=FILE 编译共享apache2.0处理程序的模块,这里设定为apache apxs工具的路径
--with-apache-hooks=FILE共享的apache1.0的钩子模块,这里设定为apache apxs工具的路径
--with-apache-hooks-static=DIR 这里设定为apache apxs工具的路径
--enable-mod-charset 使用 Apache的mod_charset
##PHP-FPM配置##
--enable-fpm 开启fpm模式(nginx等服务用的)
--with-fpm-user=USER 设置fpm运行的用户,默认为nobody
--with-fpm-group=GRP 设置fpm运行的用户组,默认为nobody
--with-fpm-systemd 激活系统集成功能,开启后fpm可以上报给系统一些信息
--with-fpm-acl 使用POSIX 访问控制列表,5.6.5版本起有效
##其他服务器支持##
值得一说的是 php并非只能运行在apache和nginx两个web server上 下面的服务器都支持php 但远不如前两者那么有名
--with-aolserver=dir aol服务器安装路径 这个服务器已经很少用了 而且很久都没更新了
--with-isapi=dir 指定Zeus webserver目录 为Zeus web service 建立ISAPI模块
--with-litespeed=dir 指定litespeed的目录 编译PHP为litespeed webserver模块
--with-nsapi=dir 指定Netscape/iPlanet/Sun的目录 为Netscape/iPlanet/Sun webserver 编译PHP为NSAPI模块
--with-caudium=dir 指定caudium web server 的目录 编译php为caudium webserver的模块
--with-continuity=dir 编译php为连续服务模块。参数为安装Continuityserver的根目录
--with-milter=dir 编译PHP为Milter应用程序 milter是网站目录邮件过滤器 2015年5月15日宣布永久关闭
--with-phttpd=dir 指定phttpd的路径 编译PHP为phttpd模块
--with-pi3web=DIR 指定pi3web的路径 编译PHP为pi3web模块 目前最新版本为 2.0.3
--with-roxen=DIR 指定roxen的路径 编译PHP为roxen模块 目前最新版本为2014年发布的5.4.66
--enable-roxen-zts 编译PHP为roxen模块,线程安全
--with-thttpd=SRCDIR 编译PHP为thttpd模块 这个常用来做嵌入式的web server
--with-tux=MODULEDIR 编译PHP为tux模块 一个遵守gpl的liunx内核web server 目前仅限于静态网页和协调核空间模块,用户模块和普通用户空间的守护进程,提供动态内容。
--with-webjames=SRCDIR 设置webjames web server的路径 编译PHP为webjames模块
##其他配置##
--disable-cli 禁用命令行模式(php-cli)
--enable-embed=TYPE 建立内嵌的SAPI库。参数为shared、static
--enable-phpdbg 编译开启phpdbg调试器--enable-phpdbg-debug 编译phpdbg调试器为debug模式
--disable-cgi 禁用cgi
##综合设置##
--enable-gcov 开启gcov支持 可以测试代码覆盖率
--enable-debug 开启debug调试
--with-layout= 设置文件将被如何安装 参数为php 或者gun
--with-config-file-path=dir 配置文件路径
--with-config-file-scan-dir=dir 设置配置文件路径 将去这个路径寻找配置文件
--enable-sigchild 使用PHP自带的SIGCHLD处理器
--enable-libgcc 启用libgcc的精确链接
--disable-short-tags 默认禁用短形式的<?作为php代码的开始标记
--enable-dmalloc 启用dmalloc(dmalloc是Linux C编程侦测记忆体溢出工具)
--disable-ipv6 关闭ipv6支持
--enable-dtrace 开启DTrace(动态跟踪)支持
--enable-fd-setsize 设置描述集的大小
第三部分 额外扩展安装
需要所得是 所有的额外扩展都需要使用 phpize来安装 phpize是什么呢?
phpize是用来扩展php扩展模块的 通过phpize可以建立php的外挂模块
比如你想在原来编译好的php中加入memcached或者ImageMagick等扩展模块 可以使用phpize
而且使用后需要在php.ini中增加 xxx.so 并重启后才能生效 这些扩展包有的也需要其他的包支持 后续我会讲到的
## fileinfo扩展 ##
获得文件的mime类型
## memcache ##
## redis ##
## gearman ##
## apc ##
缓存opcode加速代码运行速度
## gettext ##
getText是一系列的工具和库函数 帮助程序员和翻译人员开发多语言软件的
## imagick ##
imagick是一个可以供PHP调用ImageMagick功能的PHP扩展 使用这个扩展可以使PHP具备和ImageMagick相同的功能
## mcrypt ##
mcrypt 库提供了对多种块算法的支持 主要用来实现加密等算法
## mongo ##
当下比较热门的nosql mongo的扩展
第四部分 安装及扩展安装示例