CentOS裸机环境下安装php-7.3.1

安装步骤如下

安装必要的软件

    yum install -y autoconf automake libtool re2c libxml* openssl* BZip2* libcurl* libjpeg* libpng* libXpm* libzip* zlib* freetype* pcre* flex bison tar get

获取源码

    wget -O /data1/source/php-7.3.1.tar.gz http://cn2.php.net/get/php-7.3.1.tar.gz/from/this/mirror
    cd /data1/source/
    tar zxf php-7.3.1.tar.gz
    cd php-7.3.1

编译安装

    // php根目录设置为/data1/install/php
    // php的配置文件目录为/data/config/php
    // php-fpm的配置文件目录为/data/install/php/etc
    // php-fpm的可运行文件在源码目录的sapi/fpm下
    // php的可执行文件目录为/usr/local/bin
    ./configure --prefix=/data1/install/php --with-config-file-path=/data1/config/php/ --bindir=/usr/local/bin --sbindir=/user/local/sbin --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-libxml-dir --enable-debug --with-zlib --disable-rpath --enable-sysvsem --with-curl --enable-mbregex --enable-mbstring --enable-zip --enable-soap --with-pear --disable-phar --disable-tokenizer --enable-ftp --with-mysqli --with-pdo-mysql --with-openssl --with-bz2 --with-jpeg-dir --with-webp-dir --with-png-dir --with-xpm-dir --with-freetype-dir --with-mhash --with-iconv-dir --enable-gd-jis-conv --with-gd --enable-sockets --with-pcre-dir --enable-bcmath --enable-pdo
    make
    make install

安装过程可能遇到的一些问题

    如果提示libzip版本需要升级,则安装新版的,
    以下是安装1.2.0版本libzip的步骤
    yum remove libzip
    cd ~
    wget https://nih.at/libzip/libzip-1.2.0.tar.gz
    tar -zxvf libzip-1.2.0.tar.gz
    cd libzip-1.2.0
    ./configure && make && make install
    如果出现"off_t undefined; check your library configuration"这个错误
    在运行一下命令
    echo '/usr/local/lib64
    /usr/local/lib
    /usr/lib
    /usr/lib64'>>/etc/ld.so.conf&&ldconfig -v

编译参数详解

    []内的路径表示默认路径
    安装目录:
        --prefix=PREFIX         指定 php 安装目录 [/usr/local]
        --exec-prefix=EPREFIX   指定 php 用户可执行文件安装目录 [PREFIX]
        --bindir=DIR            用户可执行文件 [EPREFIX/bin]
        --sbindir=DIR           系统管理员可执行文件 [EPREFIX/sbin]
        --libexecdir=DIR        程序可执行文件 [EPREFIX/libexec]
        --sysconfdir=DIR        只读的单一机器数据目录DIR ,用于存放php.ini之类的服务器配置文件 [PREFIX/etc]
        --sharedstatedir=DIR    可改写的体系无关数据目录DIR [PREFIX/com]
        --localstatedir=DIR     可改写的单一机器数据目录DIR [PREFIX/var]
        --runstatedir=DIR       可改写的每个进程数据目录DIR [LOCALSTATEDIR/run]
        --libdir=DIR            对象代码库目录DIR [EPREFIX/lib]
        --includedir=DIR        PHP的C头文件目录DIR [PREFIX/include]
        --oldincludedir=DIR     非gcc的C头文件目录DIR [/usr/include]
        --datarootdir=DIR       PHP服务器只读的体系无关数据根目录DIR [PREFIX/share]
        --datadir=DIR           PHP服务器只读的体系无关数据目录DIR [DATAROOTDIR]
        --infodir=DIR           信息文档目录DIR [DATAROOTDIR/info]
        --localedir=DIR         地区相关数据DIR [DATAROOTDIR/locale]
        --mandir=DIR            手册文档目录DIR [DATAROOTDIR/man]
        --docdir=DIR            文档根目录 [DATAROOTDIR/doc/PACKAGE]
        --htmldir=DIR           html文档目录DIR [DOCDIR]
        --dvidir=DIR            dvi文档目录DIR [DOCDIR]
        --pdfdir=DIR            pdf文档目录DIR [DOCDIR]
        --psdir=DIR             ps文档目录DIR [DOCDIR]
    交叉编译选项:
        --build=BUILD           指定编译工具所在系统的系统类型BUILD [guessed]
        --host=HOST             指定HTTP服务器将要进行交叉编译时运行的目标系统类型HOST [BUILD]
        --target=TARGET         指定交叉编译所产生的目标代码类型 [HOST]
    可选功能和包:
        --disable-option-checking   忽略无法识别的--enable/--with选项
        --disable-FEATURE           关闭特征选项
        --enable-FEATURE[=ARG]      启用特征选项
        --with-PACKAGE[=ARG]        使用封装
        --without-PACKAGE           禁用封装
        --with-libdir=NAME          库文件查找路径设置…/XXX/lib/
        --disable-rpath             禁用传递其他运行库搜索路径
        --enable-re2c-cgoto         启用-g标志到re2c以使用计算的goto-gcc扩展
        --disable-gcc-global-regs   是否启用GCC全局寄存器变量
    SAPI模块:
        --with-apxs2=FILE           编译共享的apache2.0处理程序的模块。参数是apache apxs工具的路径文件
        --disable-cli               编译禁用CLI的PHP版本。这个参数需要–without-pear (this forces –without-pear)
        --enable-embed=TYPE         实验性:建立内嵌的SAPI库。参数为shared、static。
        --enable-fpm                启用执行FPM的SAPI可执行文件
        --with-fpm-user=USER        设置php-fpm运行用户,此处最好和Nginx服务用户统一 [nobody]
        --with-fpm-group=GRP        设置php-fpm运行用户组,对于系统用户,此通常应设置为与fpm用户名匹配,此处最好和Nginx服务用户统一 [nobody]
        --with-fpm-systemd          激活SystemD集成
        --with-fpm-acl              使用POSIX访问控制列表
        --with-litespeed            将PHP构建为LiteSpeed模块
        --enable-phpdbg             构建PHPDBG
        --enable-phpdbg-webhelper   构建phpdbg web sapi支持
        --enable-phpdbg-debug       在调试模式下生成phpdbg
        --disable-cgi               禁用生成PHP的CGI版本
        --with-valgrind=DIR         启用Valgrind支持
    普通参数设置:
        --enable-gcov                       请用GCOV代码覆盖率(仅用于开发人员使用)
        --enable-debug                      带调试符号的编译
        --with-layout=TYPE                  显示安装文件的布局。参数为PHP或GNU [PHP]
        --with-config-file-path=PATH        php.ini文件位置 [PREFIX/lib]
        --with-config-file-scan-dir=PATH    扫描配置文件的路径
        --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                 设置描述符集的大小
    扩展参数:
        语法: --with-EXTENSION=[shared[,PATH]]   (注:并非所有模块都可编译成共享方式)
        下面的例子显示了把foobar编译成共享方式,并指定安装路径为/usr/local/foobar/
        例如: –with-foobar=shared,/usr/local/foobar/
    
        --disable-all                               关闭默认为启用的所有扩展功能
        --disable-libxml                            禁用LIBXML支持
        --with-libxml-dir=DIR                       LIBXML安装目录
        --enable-ftp                                启用ftp支持
        --with-openssl=DIR                          启用openssl支持
        --with-openssl-dir=DIR                      指定openssl的安装目录
        --with-kerberos=DIR                         OpenSSL的支持:包括Kerberos
        --with-system-ciphers                       openssl:使用系统默认密码列表而不是硬编码值
        --with-pcre-regex=DIR                       启用pcre(perl兼容正则表达式)支持
        --with-pcre-jit                             启用PCRE JIT功能(仅捆绑)
        --with-pcre-valgrind=DIR                    启用PCRE Valgrind支持。仅限开发人员!
        --without-sqlite3=DIR                       不包括sqlite3支持。dir是sqlite3安装目录的前缀。
        --with-zlib=DIR                             启用zlib支持
        --with-zlib-dir=<DIR>                       定义zlib安装所在的目录
        --enable-bcmath                             启用bcmatch
        --with-bz2=DIR                              包含BZip2支持
        --enable-calendar                           启用日历转换支持
        --disable-ctype                             禁用ctype功能
        --with-curl=DIR                             启用cURL支持
        --enable-dba                                构架捆绑模块的DBA。要建立扩展的共享模块使用–enable-dba=shared参数。
        --with-qdbm=DIR                             启用QDBM支持
        --with-gdbm=DIR                             启用GDBM支持
        --with-ndbm=DIR                             启用NDBM支持
        --with-db4=DIR                              启用Berkeley DB4支持
        --with-db3=DIR                              启用Berkeley DB3支持
        --with-db2=DIR                              启用Berkeley DB2支持
        --with-db1=DIR                              启用Berkeley DB1支持
        --with-dbm=DIR                              启用DBM支持
        --with-tcadb=DIR                            启用TCADB支持
        --with-lmdb=DIR                             启用LMDB支持
        --without-cdb=DIR                           启用CDB支持(捆绑方式)
        --disable-inifile                           启用INI支持(捆绑方式)
        --disable-flatfile                          启用QDBM支持(捆绑方式)
        --disable-dom                               禁用DOM支持
        --with-libxml-dir=DIR                       启用libxml2并指定其安装目录
        --with-enchant=DIR                          包括Enchant支持.gnu Aspell 1.1.3版或更高版本。
        --enable-exif                               启用exif(来自图像的元数据)支持
        --disable-fileinfo                          禁用文件信息支持
        --disable-filter                            禁用输入过滤支持
        --with-pcre-dir                             支持及其安装目录    
        --with-gd=DIR                               启用GD支持并指定GD库的安装目录
        --with-webp-dir=DIR                         指定libwebp的安装目录
        --with-jpeg-dir=DIR                         指定libjpeg的安装目录
        --with-png-dir=DIR                          指定libpng的安装目录
        --with-zlib-dir=DIR                         指定libz的安装目录
        --with-xpm-dir=DIR                          指定libXpm的安装目录
        --with-freetype-dir=DIR                     指定FreeType2的安装目录
        --enable-gd-jis-conv                        启用JIS-mapped日语字体支持
        --with-gettext=DIR                          包含GNU gettext支持
        --with-gmp=DIR                              启用GNU MP支持
        --with-mhash=DIR                            启用mhash支持
        --disable-hash                              禁用hash支持
        --without-iconv=DIR                         禁用iconv支持
        --with-imap=DIR                             包含IMAP支持。指定c-client安装目录
        --with-kerberos=DIR                         启用kerberos支持并指定其目录
        --with-imap-ssl=DIR                         启用ssl支持并指定openssl目录
        --with-interbase=DIR                        启用interbase支持并指定其目录
        --enable-intl                               支持国际化
        --with-icu-dir=DIR                          指定可以在哪里找到ICU库和头文件
        --disable-json                              禁用JavaScript对象顺序话支持
        --with-ldap=DIR                             包含LDAP支持
        --with-ldap-sasl=DIR                        包含Cyrus SASL支持
        --enable-mbstring                           启用多字节字符串的支持
        --with-onig=DIR                             mbstring:使用外部Oniguruma。dir是oniguruma安装前缀。如果未设置dir,将使用捆绑的oniguruma
        --disable-mbregex                           禁用多字节正则表达式的支持
        --disable-mbregex-backtrack                 禁用多字节正则表达式回溯检查
        --with-mysqli=FILE                          包含MySQLi支持。参数为mysql_config的位置。如果没有值或mysqlnd作为文件传递,则将使用mysql本机驱动程序
        --enable-embedded-mysqli                    启用embedded支持。注意:不适用于MySQL本机驱动程序!
        --with-mysql-sock=SOCKPATH                  定位mysql的unix 套接字指针。如果未指定,则按默认位置搜索。
        --with-oci8=DIR                             包含Oracle支持。如果使用Oracle客户端安装则使用–with-oci8=instantclient,/path/to/oic /lib
        --with-odbcver=HEX                          强制支持传递的ODBC版本。应为十六进制数,默认值为0x0350。使用特殊值0可防止定义显式ODBCver。
        --with-adabas=DIR                           包含Adabas D支持 [/usr/local]
        --with-sapdb=DIR                            包含SAP DB支持 [/usr/local]
        --with-solid=DIR                            包含Solid支持 [/usr/local/solid]
        --with-ibm-db2=DIR                          包含IBM DB2支持 [/home/db2inst1/sqllib]
        --with-empress=DIR                          包含empress支持
        --with-empress-bcs=DIR                      包含Empress本地访问支持。
        --with-custom-odbc=DIR                      包括用户自定义的ODBC的支持。目录是ODBC安装的主目录。确定定义了CUSTOM_ODBC_LIBS并且在include目录下有 odbc.h的头文件你要在QNX上为Sybase SQL Anywhere定义如下:运行此之前,配置脚本CPPFLAGS="-DODBC_QNX -DSQLANY_BUG" LDFLAGS=-lunix CUSTOM_ODBC_LIBS="-ldblib -lodbc"
        --with-iodbc=DIR                            包含iODBC支持 [/usr/local]
        --with-esoob=DIR                            包含Easysoft OOB支持 [/usr/local/easysoft/oob/client]
        --with-unixODBC=DIR                         包含unixODBC支持 [/usr/local]
        --with-dbmaker=DIR                          包含DBMaker支持
        --disable-opcache                           禁用Zend Opcache支持
        --disable-opcache-file                      禁用基于文件的缓存
        --disable-huge-code-pages                   禁止将PHP代码页复制到大页中
        --enable-pcntl                              启用pcntl支持(仅用于CLI和CGI)
        --disable-pdo                               禁用PHP数据对象支持
        --with-pdo-dblib=DIR                        启用DBLIB-DB支持,目录为FreeTDS主目录。
        --with-pdo-firebird=DIR                     启用Firebird支持 [/opt/firebird]
        --with-pdo-mysql=DIR                        启用PDO:mysql支持
        --with-zlib-dir=DIR                         设置PDO:MySQL的zlib安装目录
        --with-pdo-oci=DIR                          设置PDO:Oracle OCI支持。为Oracle安装客户端SDK使用–with-pdo-oci=instantclient,prefix,version参数
        --with-pdo-odbc=flavour,dir                 启用“flavour”ODBC支持。在dir目录的include和lib目录下查找。“flavour”参数值可以是ibm-db2, unixODBC, generic。如果dir省略,则使用默认值。如果你试图通过generic使用一个如若不支持的驱动程序。为generic ODBC提供的语法格式如下:–with-pdo-odbc=generic,dir,libname,ldflags,cflags。作为共享的编译 后的扩展文件的名一般为pdo_odbc.so
        --with-pdo-pgsql=DIR                        启用PDO:PostgreSQL支持
        --without-pdo-sqlite=DIR                    启用SQLite 3支持
        --with-pgsql=DIR                            启用PostgreSQL支持并指定其软件根目录或者pg_config的路径
        --disable-phar                              禁用phar支持
        --disable-posix                             禁用posix-like功能
        --with-pspell=DIR                           包含PSPELL支持GNU
        --with-libedit=DIR                          包含libedit readline更换(仅用于CLI和CGI)
        --with-readline=DIR                         (CLI/CGI only)包含readline支持(仅用于CLI和CGI)
        --with-recode=DIR                           包含recode支持
        --disable-session                           禁用session支持
        --with-mm=DIR                               为session存储启用mm支持。
        --enable-shmop                              启用shmop支持
        --disable-simplexml                         禁用simpleXML支持
        --with-libxml-dir=DIR                       启用simpleXML:libXML2支持。
        --with-snmp=DIR                             包含SNMP支持。
        --with-openssl-dir=DIR                      包含SNMP:openssl支持
        --enable-soap                               启用SOAP支持
        --with-libxml-dir=DIR                       启用SOAP:LIBXML2支持
        --enable-sockets                            启用sockets支持
        --with-sodium=DIR                           包含sodium支持
        --with-password-argon2=DIR                  在密码中包含argon2支持。dir是argon2共享库路径
        --enable-sysvmsg                            启用sysvmsg支持
        --enable-sysvsem                            启用系统V信号支持
        --enable-sysvshm                            启用系统V共享内存支持
        --with-tidy=DIR                             包含tidy支持
        --disable-tokenizer                         禁用tokenizer支持
        --enable-wddx                               启用WDDX支持
        --with-libxml-dir=DIR                       包含WDDX:libxml2支持
        --with-libexpat-dir=DIR                     为XMLRPC-EPI启用libexpat(不推荐)
        --disable-xml                               禁用XML支持
        --with-libxml-dir=DIR                       启用libxml2支持
        --with-libexpat-dir=DIR                     启用libexpat支持(不推荐)
        --disable-xmlreader                         禁用XMLreader支持
        --with-libxml-dir=DIR                       启用XMLreader的libxml2支持
        --with-xmlrpc=DIR                           包含XMLRPC-EPI支持
        --with-libxml-dir=DIR                       启用XMLRPC-EPI:libxml2支持
        --with-libexpat-dir=DIR                     启用XMLRPC-EPI:libexpat支持(不推荐)
        --with-iconv-dir=DIR                        启用XMLRPC-EPI:iconv支持
        --disable-xmlwriter                         禁用XMLWriter支持
        --with-libxml-dir=DIR                       启用XMLReader:libxml2支持
        --with-xsl=DIR                              启用XSL支持
        --enable-zend-test                          启动zend-test扩展
        --enable-zip                                包含zip读写支持
        --with-zlib-dir=DIR                         启用zip:zlib支持
        --with-pcre-dir                             ZIP: pcre安装目录
        --with-libzip=DIR                           ZIP: 使用libzip
        --enable-mysqlnd                            显式启用mysqlnd,将在其他扩展需要时隐式完成
        --disable-mysqlnd-compression-support       禁用对mysqlnd中mysql压缩协议的支持
        --with-zlib-dir=DIR                         mysqlnd:设置libz安装前缀的路径
    PEAR相关选项:
        --with-pear=DIR         安装PEAR目录 [PREFIX/lib/php]
        --without-pear        不安装PEAR
    ZEND相关选项:
        --enable-maintainer-zts         启用线程安全-仅限代码维护者!!
        --disable-inline-optimization   如果构建zend_execute.lo失败,请尝试此开关
        --disable-zend-signals          是否启用Zend信号处理
    Thread Safe Resource Manager线程安全资源管理器相关配置:
        --with-tsrm-pth=pth-config      使用GNU PTH
        --with-tsrm-st                  使用SGI的状态线程
        --with-tsrm-pthreads            使用POSIX线程(默认)
    Libtool相关配置:
        --enable-shared=PKGS            编译共享模块
        --enable-static=PKGS            编译静态模块
        --enable-fast-install=PKGS      启用快速安装优化方式
        --with-gnu-ld                   假设C编译器使用GNU ld
        --disable-libtool-lock          避免锁死(可能破坏并联的编译)
        --with-pic                      尝试仅使用PIC或non-PIC对象
        --with-tags=TAGS                包括额外的配置
    一些有影响的环境变量:
        CC          C编译器命令
        CFLAGS      C编译器标志
        LDFLAGS     链接器标志
        LIBS        要传递给链接器的库
        CPPFLAGS    C/C++预处理器标志
        CPP         C预处理器
        YACC        另一个编译的编译为使用
        YFLAGS      默认情况下将传递给$yacc的参数列表。此脚本将默认yFlags为空字符串,以避免一些make应用程序给出的默认值为“-d”。
        CXX         C++编译器命令
        CXXFLAGS    C++编译器标志
        CXXCPP      C++预处理器

posted on 2019-01-15 06:14  果然朝辉  阅读(1582)  评论(0编辑  收藏  举报

导航