关闭

php编译安装详解(一)

标签: php源码安装编译配置liunx
4104人阅读 评论(0) 收藏 举报
分类:

      最近做的一个项目要部署到阿里云的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的扩展



第四部分 安装及扩展安装示例


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:172625次
    • 积分:2102
    • 等级:
    • 排名:第19113名
    • 原创:34篇
    • 转载:1篇
    • 译文:0篇
    • 评论:6条
    博客专栏
    文章分类