• 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。

    ```





  • 相关阅读:
    .NET平台下不借助Office实现Word、Powerpoint等文件的解析
    C#智能视频监控软件
    关于“线程”与“阻塞”
    asp.net 页面静态化
    纸上谈兵: 数学归纳法, 递归, 栈
    OSGI:C#如何实现简单的OSGI
    windows service (服务)创建流程
    轻松Scrum之旅——Sprint1:新手上路
    发布本人所有博客文章中涉及的代码与工具(大部分是C++和Java)
    多个常见代码设计缺陷
  • 原文地址:https://www.cnblogs.com/xuliangwei/p/6395491.html
Copyright © 2020-2023  润新知