#php7编译安装安装

```

useradd -M -s /sbin/nologin www

yum -y install openssl-devel bzip2-devel curl-devel db4-devel libjpeg-devel libpng-devel libXpm-devel gmp-devel libc-client-devel openldap-devel unixODBC-devel postgresql-devel sqlite-devel aspell-devel net-snmp-devel libxslt-devel pcre-devel mysql-devel net-snmp-devel libxslt-devel libacl-devel systemtap kernel-devel yum-utils systemtap-sdt-devel freetype freetype-devel mcrypt libmcrypt-devel mhash php-pgsql

##libiconv依赖

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

tar xf libiconv-1.14.tar.gz

cd libiconv-1.14

./configure --prefix=/usr/local/libiconv

make && make install

cd ..

##下载php7进行编译安装

wget http://download.xuliangwei.com/php-7.0.13.tar.gz

tar xf php-7.0.13.tar.gz

cd php-7.0.13

./configure \

--prefix=/soft/php7013 \

--with-config-file-path=/soft/php7013/etc \

--with-iconv-dir=/usr/local/libiconv \

--with-mysqli=mysqlnd \

--with-pdo-mysql=mysqlnd \

--with-pdo-pgsql=pgsqlnd \

--with-pgsql=pgsqlnd \

--with-curl \

--with-gd \

--with-xpm-dir \

--with-jpeg-dir \

--with-png-dir \

--with-freetype-dir \

--with-xmlrpc \

--with-fpm-user=www \

--with-fpm-group=www \

--with-fpm-acl \

--with-mcrypt \

--with-tsrm-pthreads \

--with-gettext \

--with-libxml-dir \

--with-zlib \

--with-kerberos=/usr \

--with-openssl \

--with-mhash \

--enable-calendar \

--enable-sysvsem \

--enable-sysvshm \

--enable-sysvmsg \

--enable-bcmath \

--enable-exif \

--enable-ftp \

--enable-mbstring \

--enable-shmop \

--enable-sockets \

--enable-dtrace \

--enable-soap \

--enable-zip \

--enable-gd-native-ttf \

--enable-opcache \

--enable-xml \

--enable-mbregex \

--enable-inline-optimization \

--enable-pcntl \

--enable-pdo \

--enable-maintainer-zts \

--enable-fpm \

--disable-rpath \

--disable-fileinfo

make && make install

\cp php.ini-production /soft/php7013/etc/php.ini

\cp sapi/fpm/init.d.php-fpm /etc/init.d/php7-fpm

chmod +x /etc/init.d/php7-fpm

##如若编译报错。指定libiconv

make ZEND_EXTRA_LIBS='-liconv -L /usr/local/libiconv/lib'

```

##php7与sql连接

```

##测试MySQLi连接mysql

<?php

$servername = "localhost";

$username = "username";

$password = "password";

// 创建连接

$conn = mysqli_connect($servername, $username, $password);

// 检测连接

if (!$conn) {

die("Connection failed: " . mysqli_connect_error());

}

echo "连接成功";

?>

##测试pdo连接mysql

<?php

$servername = "localhost";

$username = "username";

$password = "password";

try {

$conn = new PDO("mysql:host=$servername;dbname=test", $username, $password);

echo "连接成功";

}

catch(PDOException $e)

{

echo $e->getMessage();

}

?>

##测试连接pgsql

yum install php-pgsql

```

##php扩展模块

```

加载redis扩展https://www.iamle.com/archives/1989.html

wget -c https://github.com/phpredis/phpredis/archive/php7.zip

unzip php7.zip

cd phpredis-php7

/usr/local/php7/bin/phpize

./configure --with-php-config=/usr/local/php7/bin/php-config

make

make install

cd ..

/usr/local/php7/etc/php.ini

中加入

extension=redis.so

##加载memcache扩展

https://github.com/websupport-sk/pecl-memcache/archive/php7.zip  # FTP上传

cd pecl-memcache

export PHP_PREFIX="/usr/local"

$PHP_PREFIX/php70/bin/phpize

./configure --with-php-config=$PHP_PREFIX/php70/bin/php-config

make && make install

```

##PHP7编译参数详解

```

--prefix=/usr/local/php706 //指定php安装目录

--enable-calendar //打开日历扩展功能

--enable-sysvsem //使用sysv信号机制,则打开此选项

--enable-sysvshm //启用系统V共享内存支持。

--enable-sysvmsg //启用sysvmsg支持。

--enable-bcmath //打开图片大小调整,用zabbix监控时会用到该模块

--enable-exif //图片的元数据支持

--enable-ftp //打开ftp的支持

--enable-mbstring //支持mbstring

--enable-shmop //启用shmop支持

--enable-sockets //打开sockets支持

--enable-dtrace //开启DTrace(动态跟踪)支持

--enable-soap //soap模块的扩展

--enable-zip //打开对zip的支持

--enable-mbregex         //多字节字符串 函数

--enable-inline-optimization     /优化线程

--enable-pcntl   //freeTDS需要用到,可能是链接mssql

--enable-pdo    //兼容PHP接口的数据连接拓展。

--enable-gd-native-ttf //支持TrueType字符串函数库

--enable-opcache   //开启 OPcache高速缓存。

--enable-xml       //

--enable-maintainer-zts  /启用线程安全 - 代码维护者使用

--enable-fpm  //表示激活PHP-FPM方式服务,即FactCGI方式运行PHP服务

--with-iconv-dir=/usr/local/libiconv //libiconv库,各种字符集间的转换

--with-gettext //打开gnu的gettext 支持,编码库用到

--with-libxml-dir //打开libxml2库的支持

--with-zlib  //打开zlib库的支持,用于http压缩传输

--with-kerberos=/usr  //Openssl包含kerberos支持

--with-openssl  //openssl的支持,加密传输时用到

--with-mhash  //mhash算法的扩展

--with-mysql-sock=mysql_socket  //指定mysql的socket。如果未指定,按默认位置搜索

--with-mysqli=mysqlnd //mysqli扩展

--with-pdo-mysql=mysqlnd //PDO:MySQL支持。DIR是MySQL的基本目录,如果没有值或mysqlnd作为DIR传递,则将使用MySQL本机驱动程序DIR是MySQL的基本目录,如果没有值或mysqlnd作为DIR传递,则将使用MySQL本机驱动程序

--with-pdo-pgsql=pgsqlnd         //启用PostgreSQL支持并指定其软件根目录或者pg_config的路径(pgsql需使用)

--with-curl  //打开curl浏览工具的支持

--with-gd  //打开gd库的支持

--with-xpm-dir //指定gd库libXpm的安装目录

--with-jpeg-dir //打开对jpeg图片的支持

--with-png-dir //打开对png图片的支持

--with-freetype-dir //打开对freetype字体库支持

--with-xmlrpc //打开xml-rpc的c语言

--with-fpm-user=nobody  //指定PHP-FPM进程管理的用户为www,此处最好和Nginx服务用户统一。

--with-fpm-group=nobody   //指定PHP-FPM进程管理用户组为www,最好和Nginx服务用户组统一。

--with-fpm-acl    //使用POSIX 访问控制列表,5.6.5版本起有效

--with-mcrypt     //编码函数库

--with-tsrm-pthreads //使用 POSIX 线程(默认)。

--disable-fileinfo  //关闭一些运行中的进程如mysqld,httpd等等,以节约内存。

--disable-rpath //关闭额外的运行库文件

make ZEND_EXTRA_LIBS='-liconv -L/usr/local/libiconv/lib' //iconv函数库能够完成各种字符集间的转换,比如:实现utf-8和gb2312编码的转换

make ZEND_EXTRA_LIBS='-liconv'

make install

cp php.ini-production /usr/local/php7/etc/php.ini

configure  它可以自动设定源程序以符合各种不同平台上Unix系统的特性,并根据系统叁数及环境产生合适的Makefile文件让源程序可以很方便地在不同的平台上被编译

make  是用来编译的,它从Makefile中读取指令,然后编译。

make install  将程序安装至系统中。如果原始码编译无误,且执行结果正确,便可以把程序安装至系统预设的可执行文件存放路径。从Makefile中读取指令,安装到指定的位置。

make clean  清除编译产生的可执行文件及目标文件(object file,*.o)。

make distclean 除了清除可执行文件和目标文件外,把configure所产生的Makefile也清除掉。

##PHP7可选参数

--with-xsl=shared,/usr   //打开XSLT 文件支持,扩展了libXML2库 ,需要libxslt软件

--with-zlib-dir=/usr  //定义zlib安装所在的目录(压缩与归档)

--with-snmp=shared,/usr  //包含SNMP支持。(SNMP简单的服务器监控系统)

--with-tidy=shared,/usr  //包含tidy支持。(网页代码分析和纠错的工具,能够支持多种页面编码,并且支持xhtml输出)

--with-recode=shared,/usr  //包含recode支持(Recode库可以在各种编码字符集和表面编码之间转换文件)

--with-pspell=shared,/usr  //包含PSPELL支持GNU (实现拼写检查)

--with-gmp=shared,/usr  //启用GNU MP支持

--with-enchant=shared,/usr  //启用 enchant 支持.(各种拼写库的抽象层)

--with-vpx-dir=shared,/usr  //GD: 指定libvpx的安装目录(VP8编码解码器)

--with-system-tzdata //程序执行函数

--enable-intl   //开启国际化支持(国际化与字符编码支持)

--with-mssql=shared,/usr  //包含MSSQL-DB支持,并指定FreeTDS软件目录(php7已移除)

--with-ldap=shared,/usr   //ldap扩展模块

--with-ldap-sasl=/usr  //ldap扩展模块

--with-unixODBC=shared,/usr  //包含unixODBC支持(通过ODBC链接 本地mysql)

--disable-static  //禁用静态库

##php7默认,可不增选项

--disable-debug  /关闭详细的请求信息(默认为关闭)

--build=x86_64-linux-gnu  //指定编译工具所在系统的系统类型BUILD

--host=x86_64-linux-gnu   //指定Apache HTTP服务器将要进行交叉编译时运行的目标系统类型HOST

--localstatedir=/var  //机器数据目录DIR (默认安装路径下的var)

--mandir=/usr/share/man  //手册文档目录DIR (默认安装路径下的datarootdir下man目录)

--disable-short-tags  默认禁用短形式的开始标签 <? 。

--disable-libtool-lock 避免锁定(可能会破坏并行构建)

--disable-all 禁用默认情况下启用的所有扩展程序

--enable-shared=PKGS     //默认启用构建共享库

--enable-static=PKGS     //默认启用构建静态库

--enable-fast-install = PKGS //默认启用优化后快速安装

--enable-ctype  //ctype 扩展,从PHP4.2.0默认启用。通过--disable-ctype禁用

--with-pear=/usr/share/php  //PEAR(实现了诸如析构函数,错误捕获功能)默认为 PREFIX/lib/php

--with-apxs2=/usr/bin/apxs2  //apxs是以php module的模式加载PHP的。

--with-pcre-regex=/usr  //PHP 4.2.0 开始这些函数是默认启用的。可以通过--without-pcre-regex //禁用 pcre 函数

--with-layout=GNU  //显示安装文件的布局PHP或GNU(默认PHP)

--with-regex=php  //正则表达式库类型(默认TYPE=PHP)

--with-sqlite3=shared,/usr  //5.3 默认启动SQLite3 扩展。

--with-mysql-sock=SOCKPATH //mysql unix套接字指针位置。如果未指定,将搜索默认位置

--with-odbcver=HEX //强制支持通过的ODBC版本。 预期的十六进制数,默认为0x0300。

--with-gnu-ld //假设C编译器使用GNU ld default = no

--with-config-file-path=PATH  //设置 php.ini 的搜索路径。默认为 PREFIX/lib。

--with-fpm-user= //默认nobody用户

--with-fpm-group= //默认nobody用户组

--with-tsrm-pthreads //默认使用 POSIX 线程。

--with-pic //尝试只使用PIC /非PIC对象,默认同时使用

--with-apxs[=FILE] //编译共享的 Apache 模块。FILE 是可选的 Apache apxs 工具的路径,默认指向 apxs。

```

02.PHP7.x编译详解的更多相关文章

  1. 2010_3_1最新 完整 FFMPEG 编译详解

    在网上看了很多编译详解,都很零散.经过自己的编译,解决一些BUG,在此分享自己的一些经验... 话不多说了!直接上贴. 第一步:准备编译平台. 需要 一个 MinGW 和 一个 MSYS 安装包 以及 ...

  2. Android 6.0 RK3288 ROM编译详解+命令详解【转】

    本文转载自:http://blog.csdn.net/MLQ8087/article/details/58607692 Android 6.0 RK3288 ROM编译详解+命令详解 原创 2017年 ...

  3. spring原理案例-基本项目搭建 02 spring jar包详解 spring jar包的用途

    Spring4 Jar包详解 SpringJava Spring AOP: Spring的面向切面编程,提供AOP(面向切面编程)的实现 Spring Aspects: Spring提供的对Aspec ...

  4. Android编译详解之lunch命令 【转】

    本文转载自: Android编译详解之lunch命令 (2012-10-08 10:27:55) 转载▼ 标签: it 分类: android内核剖析     Android的优势就在于其开源,手机和 ...

  5. 01.PHP5.x编译详解

    ##PHP5.5编译安装 ``` wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo yum i ...

  6. Android APK反编译详解(附图)

    转载自http://blog.csdn.net/sunboy_2050/article/details/6727581 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而 ...

  7. GCC 编译详解

    GNU CC(简称为Gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C.C++和Object C等语言编写的程序.Gcc不仅功能强大,而且可以编译如C.C++.Object C.Jav ...

  8. Android APK反编译详解(附图)(转)

    这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程. 在此郑重声明,贴出来的目的不是为了去破解人家的软件, ...

  9. (转)Android APK反编译详解

    转载地址:http://blog.csdn.net/ithomer/article/details/6727581 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到 ...

随机推荐

  1. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理5

    我们先直接拷贝下blank.html这个页面的代码,顺带先建立一个Home控制器,并添加Index视图.将代码拷贝进去. <!DOCTYPE html> <html lang=&qu ...

  2. Ahead-of-time compilation(AOT)

    Ahead-of-time (AOT) compilation is the act of compiling a high-level programming language such as C  ...

  3. iOS项目立项

    哎,计划总是赶不上变化,仿佛又回到了十年前高三的时候,每月.每周.每天都有计划,但是每周.每天都有计划外的因素导致了计划时时变,唯一不变的就只有变化了. 想了许久,中期计划内还是转回iOS吧,说转回其 ...

  4. 可视化PK纯代码

    简述 其实今天说的内容不仅仅局限于Qt,在很多其它语言或者框架中也适用,那就是 - 用可视化工具or文本编辑器?拖or不拖? 如果有人问我喜欢脱or不脱?我会毫不犹豫地说不脱,因为我比较矜持O(∩_∩ ...

  5. yii2源码学习笔记(十五)

    这几天有点忙今天好些了,继续上次的module来吧 /** * Returns the directory that contains the controller classes according ...

  6. HTML5 & CSS3 初学者指南(4) – Canvas使用

    介绍 传统的HTML主要用于文本的创建,可以通过<img>标签插入图像,动画的实现则需要第三方插件.在这方面,传统的HTML极其缺乏满足现代网页多媒体需求的能力.HTML5的到来,带来了新 ...

  7. 使用EPPlus读写xlsx文件

    朋友有个需求,想对N张excel表做过滤和合并的处理,拜托我写个小程序.因为用户的背景是非专业用户,因此最好的选择是写个GUI程序,再加上读写excel的需求,所以我的首选就是C#的WinForm了. ...

  8. 微信小程序开发基础知识总结

    微信小程序在无论在功能.文档及相关支持方面,都是优于前面几种微信账号类型,它提供了很多原生程序才有的接口,使得我们的小程序在很多方面突破H5页面应用的限制,更加接近原生程序的功能,因此微信小程序具有很 ...

  9. [No000015A]SQL语句分类

    1.Data Definition Language(DDL) 数据定义 CREATE - 在数据库中创建对象: ALTER - 修改数据库结构: DROP - 删除对象: RENAME - 重命名对 ...

  10. Ambari集群的搭建(离线安装)

    我们先克隆几台机器 我们打开克隆出来的机器 我们先把主机名修改一下 我们把主机名改成am2 下一步我们来配置网卡 把原来的eth0的注释掉,把现在的eth1改成eth0,同时把mac地址记下来 保存退 ...