02.PHP7.x编译详解
#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编译详解的更多相关文章
- 2010_3_1最新 完整 FFMPEG 编译详解
在网上看了很多编译详解,都很零散.经过自己的编译,解决一些BUG,在此分享自己的一些经验... 话不多说了!直接上贴. 第一步:准备编译平台. 需要 一个 MinGW 和 一个 MSYS 安装包 以及 ...
- Android 6.0 RK3288 ROM编译详解+命令详解【转】
本文转载自:http://blog.csdn.net/MLQ8087/article/details/58607692 Android 6.0 RK3288 ROM编译详解+命令详解 原创 2017年 ...
- spring原理案例-基本项目搭建 02 spring jar包详解 spring jar包的用途
Spring4 Jar包详解 SpringJava Spring AOP: Spring的面向切面编程,提供AOP(面向切面编程)的实现 Spring Aspects: Spring提供的对Aspec ...
- Android编译详解之lunch命令 【转】
本文转载自: Android编译详解之lunch命令 (2012-10-08 10:27:55) 转载▼ 标签: it 分类: android内核剖析 Android的优势就在于其开源,手机和 ...
- C语言001--hello world编译详解
1.编写hello.c程序,并编译运行 book@100ask:~/linux/c01$ cat hello.c -n 1 #include <stdio.h> 2 3 int main( ...
- 01.PHP5.x编译详解
##PHP5.5编译安装 ``` wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo yum i ...
- Android APK反编译详解(附图)
转载自http://blog.csdn.net/sunboy_2050/article/details/6727581 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而 ...
- GCC 编译详解
GNU CC(简称为Gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C.C++和Object C等语言编写的程序.Gcc不仅功能强大,而且可以编译如C.C++.Object C.Jav ...
- Android APK反编译详解(附图)(转)
这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程. 在此郑重声明,贴出来的目的不是为了去破解人家的软件, ...
随机推荐
- Maven入门,Maven项目的创建,nexus 2.x搭建私服以及Maven多模块项目创建
maven的了解做一个总结,以便日后查阅, 若有不足之处,还望指出,学无止境 当然也能起到入门效果. 一,搭建maven私服 1.工具 a. Nexus 2.5.1-01 b. Maven 3.3.9 ...
- SDOI Day2
今天做了SDOI Day2 觉得自己萌萌哒= =题目真的有点水,一点编程复杂度都没有 T1:星际战争 描述:http://www.lydsy.com/JudgeOnline/problem.php?i ...
- Hadoop伪分布安装配置
安装环境: 系统:Ubuntu 14.10 64bit hadoop:2.5.1 jdk:1.8.0_11 安装步骤: 一.安装JDK 安装 jdk,并且配置环境以及设置成默认 sudo gedi ...
- 定制Maven的ArcheType
根据需要定制Maven的ArcheType的好处不言而喻了,我就不再啰嗦.定制一般通过从Maven的项目构建,比手动构建省去了配置文件的编写.资源文件的复制等繁琐的操作,下面我们就说下从Maven项目 ...
- 安全体系(三)——SHA1算法详解
本文主要讲述使用SHA1算法计算信息摘要的过程. 安全体系(零)—— 加解密算法.消息摘要.消息认证技术.数字签名与公钥证书 安全体系(一)—— DES算法详解 安全体系(二)——RSA算法详解 为保 ...
- AlloyTouch.js 源码 学习笔记及原理说明
alloyTouch这个库其实可以做很多事的, 比较抽象, 需要我们用户好好的思考作者提供的实例属性和一些回调方法(touchStart, change, touchMove, pressMove, ...
- C#:判断100--999之前的水仙花数
//判断100--999之前的水仙花数.水仙花数举例:153=13+53+33. using System;public class Program { public static void ...
- Struts中数据处理
对数据操作的3种方法(把数据保存到域中): 方式1:直接获取servletApi 核心类:ServletActionContext提供的静态方法 /** * 方式1:拿到servletApi,执行操作 ...
- SQL server 数据库——数学函数、字符串函数、转换函数、时间日期函数
数学函数.字符串函数.转换函数.时间日期函数 1.数学函数 ceiling()--取上限 select ceiling(oil) as 油耗上限 from car floor()--取下限 sele ...
- wemall app商城源码中基于JAVA的Android异步加载图片管理器代码
wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改.本文分享其中 ...