ubuntu php 编译安装mysql_ubuntu LTS 16.04 编译安装PHP

本文详细介绍了如何在Ubuntu LTS 16.04上编译安装PHP7.1.10和MySQL的相关依赖,包括libiconv的安装,以及配置Apache解析PHP和mysqli扩展的过程。
摘要由CSDN通过智能技术生成

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连接,具体可选的有mysqli和pdo-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-development 和 php.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也是同理)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值