• CentOS7 下源代码安装php7


    绪:配置选项讲解:./configure --help | less

    使用--enable-NAME--disable-NAME开关编译哪些扩展和SAPI .

    如果扩展或SAPI具有外部依赖关系,则需要使用--with-NAME--without-NAME.

    如果NAME所需的库 不在默认位置(例如,因为您自己编译),则可以使用--with-NAME = DIR指定其位置.

    如果选项是--enable-NAME--with-NAME说明该选项默认是关闭的.如果是--disable-NAME--without-NAME说明该选项默认是开启的.

    引用链接

    • enable 是启用 PHP 源码包自带,但是默认不启用的扩展,比如 ftp 和 exif 扩展。with 是指定扩展依赖的资源库的位置,如果是默认位置,就可以留空。
    • php 的扩展分为静态编译和动态编译两种,静态编译就是随着PHP的源码一起编译安装,也就是 --enable 和 --with 启用的扩展。动态编译就是在一个已经可以使用的 PHP 环境下,使用 phpize 命令来给 php 增加扩展的方式,这种方式就是生成的 so 文件。所以想要把扩展编译进 php 内核,就需要和 php 一起编译安装。
    • php源码包ext目录下的就是官方默认支持的扩展,还有一部分就是 pecl 库里的扩展,pecl 的一部分扩展也是官方支持的,另一部分是第三方开发者支持的。
    • 把扩展跟随php一起编译安装,也就是 configure 命令
    比如 configure 命令行可能看起来象这样:

    $ ./configure --prefix=/where/to/install/php --enable-debug --enable-maintainer-zts --enable-cgi --enable-cli --with-mysql=/path/to/mysql

    一、安装PHP7:
    安装php:
    # tar zxvf php-7.1.2.tar.gz
    # cd php-7.1.2
    #./configure --prefix=/usr/local/php71
     --with-apxs2=/usr/local/apache24/bin/apxs
     --with-curl
     --with-freetype-dir
     --with-gd
     --with-gettext
     --with-iconv-dir
     --with-jpeg-dir
     --with-kerberos
     --with-libdir=lib64
     --with-libxml-dir
     --with-mysqli
     --with-openssl
     --with-pcre-regex
     --with-pdo-mysql
     --with-pdo-sqlite
     --with-pear
     --with-png-dir
     --with-xmlrpc
     --with-xsl
     --with-zlib
     --with-bz2
     --with-mhash
     --with-fpm-user=www
     --with-fpm-group=www
     --enable-fpm
     --enable-bcmath
     --enable-libxml
     --enable-inline-optimization
     --enable-gd-native-ttf
     --enable-mbregex
     --enable-mbstring
     --enable-opcache
     --enable-pcntl
     --enable-shmop
     --enable-soap
     --enable-sockets
     --enable-sysvsem
     --enable-sysvshm
     --enable-xml
     --enable-zip
     
    #make
    #make install
     
    最后到php的解压目录复制一下php的配置文件
    #cp php.ini-development /usr/local/php71/lib/php.ini 
    因为默认配置文件目录为 Configuration File (php.ini) Path     /usr/local/php/lib
     
    目前apache 还无法加载PHP解析模块
    vim /usr/local/apache/conf/httpd.conf
    在最下面加入一行AddHandler application/x-httpd-php .php
    重启Apache服务,然后写一个简单的检测文件吧。
    <?php
        phpinfo();
    ?>
    把PHP加入环境变量
     
    遇到的问题:

    Sorry, I cannot run apxs. Possible reasons follow:

    1. Perl is not installed

    2. apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs

    3. Apache was not built using --enable-so (the apxs usage page is displayed)

    首先:看是是否安装  perl -v

    若没有 则 wget  http://www.cpan.org/src/5.0/perl-5.16.1.tar.gz

    tar  xzvf  perl-5.16.1.tar.gz

    cd  perl-5.16.1.tar.gz

    ./Configure -des -Dprefix=/usr/local/perl

    make

    make install

    然后,若有安装perl :

    1、根据不能run apxs 。cd 到apache的bin目录下运行./apxs 运行结果

    bash: ./apxs: /replace/with/path/to/perl/interpreter: bad interpreter: No such file or directory

    2、vim apxs文件 找“/replace/with/path/to/perl/interpreter”关键字

    在第一个行 :#!/replace/with/path/to/perl/interpreter -w

    根据perl的安装目录 /usr/bin/perl

    修改为:#! /usr/bin/perl -w

     
    configure: error: libxml2 not found. Please check your libxml2 installation.
    yum install libxml2-devel -y
     
    configure: error: Cannot find OpenSSL's <evp.h>
    yum install openssl-devel -y
     
    configure: error: cURL version 7.10.5 or later is required to compile php with cURL support
    yum install curl-devel -y
     
    configure: error: png.h not found.
    yum install libpng-devel -y
     
    configure: error: freetype-config not found.
    yum install freetype-devel -y
     
    configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution
    yum install libxslt-devel -y
     
     
    综上安装php大概需要的扩展:
    yum install -y
    libxml2 libxml2-devel openssl openssl-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libmcrypt libmcrypt-devel  libxslt-devel bzip2-devel
     
    启动 php-fpm 出现问题:
    cd /usr/local/php71
    cp etc/php-fpm.conf.default etc/php-fpm.conf
    cp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf
     

    重启 php-fpm

    我们在新安装扩展后,是需要重新php-fpm的,已使扩展生效。

    最简单粗暴的重新php-fpm的方式是:

    先找到php-fpm的进程号,kill 掉,再用/usr/local/php/sbin/php-fpm 这样启动。

    其实还有更多温和的方法,就是使用信号。

    INT, TERM:立刻终止

    QUIT:平滑终止

    USR1:重新打开日志文件

    USR2:平滑重载所有worker进程并重新载入配置和二进制模块

    示例:

    php-fpm 关闭:kill -INT `cat /usr/local/php/var/run/php-fpm.pid`

    php-fpm 重启:kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

    若是要生成php-fpm.pid文件,修改/usr/local/php71/etc/php-fpm.conf文件,默认pid是注释的

    添加systemctl 命令管理:
    vim /lib/systemd/system/php-fpm.service

    [Unit]
    Description=php-fpm
    After=network.target

    [Service]
    Type=forking
    PIDFile=/usr/local/php71/var/run/php-fpm.pid
    ExecStart=/usr/local/php71/sbin/php-fpm
    ExecReload=/bin/kill -USR2 MAINPID
    ExecStop=/bin/kill −INT MAINPID
    PrivateTmp=true

    [Install]
    WantedBy=multi-user.target

    二、文件解释
     
    生成的可执行文件php-fpm在sbin中,其他部分在bin目录下。

    其中,php是CLI模式下的PHP脚本执行程序。

    PEAR(PHP Extension and Application Repository,PHP扩展与应用库),是PHP官方开源类库,可以使用pear list列出所有已经安装的包。通过pear install可以安装需要的包。

    PECL是PHP的扩展库,可以通过PEAR的Package Manager的管理

    php-config是输出PHP编译信息的辅助命令。

    phpdbg是一个轻量级,具有丰富功能的调试平台。PHP 5.4以上版本支持,比如可以使用它查看opcode

    phpdbg的其他功能可以通过phpdbg--help查看。

    phpize命令用来动态安装扩展,如果在安装PHP时没有安装某个扩展,可以通过这个命令随时安装。

     

     

    参考文档:
    https://www.linuxidc.com/Linux/2014-02/96761.htm
     

     

  • 相关阅读:
    付出给人一种美好的感觉
    表连接查询 条件在On与Where后区别
    Json与实体类 转化
    算法的时间复杂度和空间复杂度详解
    真的理解同步和异步了吗?
    花生壳申请域名并进行内网穿透
    XML 反序列化
    .Net 发送邮件
    BootStrap DataTable 时间日期列排序
    SQL Server 动态SQL拼接
  • 原文地址:https://www.cnblogs.com/cshaptx4869/p/10395744.html
Copyright © 2020-2023  润新知