美文网首页程序员
ubuntu LTS 16.04 编译安装PHP

ubuntu LTS 16.04 编译安装PHP

作者: 彬哲 | 来源:发表于2017-10-11 22:53 被阅读932次

    ubuntu LTS 16.04只能安装php7及以上版本,这里安装的具体版本是php7.1.10

    安装相关依赖库

    依赖库安装

    sudo apt-get update
    sudo apt-get install libxml2-dev
    sudo apt-get install build-essential
    sudo apt-get install openssl
    sudo apt-get install libssl-dev 
    sudo apt-get install make
    sudo apt-get install curl
    sudo apt-get install libcurl4-gnutls-dev
    sudo apt-get install libjpeg-dev
    sudo apt-get install libpng-dev
    sudo apt-get install libtool-bin
    sudo apt-get install bison
    sudo apt-get install php7.0-dev
    sudo apt-get install php-fpm
    

    编译安装libiconv

    libiconv官网下载压缩包,放到/usr/local/src下,解压,编译安装,这里下载的是libiconv-1.15.tar.gz

    sudo tar zxvf libiconv-1.15.tar.gz
    cd libiconv-1.15
    sudo ./configure --prefix=/usr/local
    sudo make
    sudo make install
    sudo ldconfig // 刷新动态链接库缓存
    

    注意,这里是将libiconv安装到了系统默认的lib目录下,安装路径/usr/local不可随意更改,否则后面会出现编译错误。另外,执行sudo make之后会有如下warning

    warning: remember too run 'libtool --finish /usr/local/lib'
    

    按照warning的提示执行一下

    libtool --finish /usr/local/lib
    

    编译安装PHP

    编译PHP

    PHP官网下载php7.1.10压缩包放到/usr/local/src下,解压,编译安装,这里下载的是php-7.1.10.tar.gz

    sudo tar zxvf php-7.1.10.tar.gz
    cd php-7.1.10
    sudo ./configure --prefix=/usr/local/php-7.1.10 --with-config-file-path=/usr/local/php-7.1.10/conf  --with-apxs2=/usr/local/apache2/bin/apxs --with-iconv-dir=/usr/local/lib --enable-fpm --enable-mysqlnd --with-mysqli=mysqlnd --without-pear --disable-phar
    sudo make ZEND_EXTRA_LIBS='-liconv'
    sudo make install
    

    注意,这里--with-apxs2的路径要与apache2安装路径一致,--with-iconv-dir路径要与libiconv安装路径一致,pear是php的一个组件,需要专门安装,因为php5以后,pear没什么用了,所以这里就禁用了pear。

    fpm是支持PHP的一个比较好的工具,php-fpm参数如下:

    --start 启动
    --stop 强制终止
    --quit 平滑终止
    --restart 重启
    --reload 重新平滑加载php的php.ini
    --logrotate 重新启用log文件
    

    另外,PHP7.0启用了mysqlnd来支持MySQL连接,具体可选的有mysqlipdo-mysql,可以通过参数来配置

    --enable-mysqlnd
    --with-mysqli=mysqlnd
    --with-pdo-mysql=mysqlnd
    

    安装完成之后,会有warning

    warning: remember to run 'libtool --finish /usr/local/src/php-7.1.10/libs'
    

    按照warning的提示执行一下

    libtool --finish /usr/local/src/php-7.1.10/libs
    

    完成之后,会在/usr/local/apache2/modules下生成一个libphp7.so,这就是Apache的php动态链接库.

    PHP7.0以后不再提供默认的php.ini配置文件,而是在源码目录下提供php.ini-developmentphp.ini-production 两个配置文件,一个用于开发环境,一个用于线上环境。这里我们把php.ini-production 复制到之前的php配置目录下,作为php的配置文件

     sudo cp /usr/local/src/php-7.1.10/php.ini-production /usr/local/php-7.1.10/conf/php.ini
    

    接下来我们配置Apache解析PHP & Apache的mysqli扩展

    配置Apache解析PHP

    打开Apache的主配置文件/usr/local/apache2/conf/httpd.conf,写入如下配置行

    // 这一行刚刚安装php的时候,系统应该已经自动生成了,如果没有,手动加入即可
    // 配置Apache加载php动态链接库
    LoadModule php7_module modules/libphp7.so
    
    // 配置Apache解析php
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
    

    配置Apache的mysqli扩展

    php.ini中加入以下配置

    extension=/usr/local/php-7.1.10/lib/php/extensions/no-debug-zts-20151012/mysqli.so
    

    在mysql-server的配置目录下,从主配置文件my.cnf开始遍历配置文件,找到mysqld.sock的路径。这里是用apt-get安装的mysql-server-5.7,所以mysqld.sock路径是/var/run/mysqld/mysqld.sock,我们需要把这个路径写到php.ini中。找到mysqli.default_socket,写入配置

    mysqli.default_socket = /var/run/mysqld/mysqld.sock
    

    重启Apache,加个php页面,用echo phpinfo()看看Apache能否正常解析php,是否正常加载了php的配置文件,是否支持了mysqli,以及是否能找到mysqli.default_socket是否已经被配置。

    编译安装PHP的mysqli扩展(以此为例介绍如何编译安装PHP扩展)

    PHP所有的扩展都放在目录/usr/local/php-7.1.10/lib/php/extensions/no-debug-zts-20151012/下,我们在这个目录下可以看到apache的扩展,现在我们来编译mysqli扩展。

    转到php源码目录下的ext文件夹中,这里可以看到该php版本所支持的所有扩展,应该可以看到mysqli文件夹。转到mysqli下,运行phpize

    /usr/local/src/php-7.1.10/ext/mysqli$ /usr/local/php-7.1.10/bin/phpize
    

    会得到以下信息

    Configuring for:
    PHP Api Version:         20151012
    Zend Module Api No:      20151012
    Zend Extension Api No:   320151012
    

    会在该目录下生成configure等文件,然后执行

    sudo ./configure --with-php-config=/usr/local/php-7.1.10/bin/php-config --with-mysqli
    sudo make
    sudo make install
    

    注意,这里--with-php-config并非apache配置文件所在路径,必须设为bin/php-config。安装完之后会提示extensions所在路径,转到该路径下,可以看到mysqli.so,即为mysqli扩展。(编译安装其他PHP也是同理)。

    相关文章

      网友评论

        本文标题:ubuntu LTS 16.04 编译安装PHP

        本文链接:https://www.haomeiwen.com/subject/ysbgyxtx.html