PHP7在Ubuntu 12.04下安装的历程

php7“PHP7性能达到5.5的两倍”。太令人惊喜了,自己VPS的版本还停留在5.3,要不要升级体验一下?

周末乘着有时间,终于下决心尝试升级安装了一次。周折不少,但结果是成功了,很开心,下面就把流水账记一下。

(1)LAMP环境准备工作

官网给出的安装方法及网上找到的,都需要通过全新编译PHP7来完成安装,考虑到需要重新安装,就备份了Apache和MySQL的数据。

编译安装指导,来源如下:

1、官方PHP通用的安装指导:http://php.net/manual/zh/install.unix.php

2、从百度搜索PHP7安装的成功案例,有两个网址可供参考,提供详细的编译参数和问题解决办法:

http://www.zimuel.it/install-php-7/

http://blog.csdn.net/qf0129/article/details/51195522

3、下载PHP7源代码,并完成解压缩,不再详述。

(2)设置编译参数,执行编译步骤

官网提供的编译配置参数很简单:./configure --with-apxs2=/usr/bin/apxs --with-mysqli

可以先按此参数完成编译安装动作:

1、按上述命令执行编译配置;

2、执行make

3、执行make install

(3)解决编译问题

1、编译中如出现所需模块不存在的问题,可以通过Ubuntu的apt-get包管理工具安装。

例如,错误提示:Error: Unable to locate gmp.h

则缺失 libgmp-dev 程序库,安装方法:

sudo apt-get install libgmp-dev
需要安装的开发库:
xml2
curl4-openssl
bz2
jpeg
png
freetype6
gmp
mcrypt
mysqlclient
recode
xlst
gmp.h如果找不到,按如下命令解决:
ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h

 

2、注意--with-apxs2=/usr/bin/apxs 参数的正确性

一般Apache2.2版本,路径地址需要改为--with-apxs2=/usr/bin/apxs2

注意:默认情况Ubuntu的Apache安装不带有apxs这个程序,需要安装apache2-dev软件包。

如果不带这个参数编译,通过是没问题的,但不能产生Apache所需的动态库文件:libphp7.so。

(4)卸载老版本的lamp-server,重新安装apache和mysql

这一步其实可能不需要做,但是我做了。这个步骤浪费了绝大部分时间。

lamp-server包是ubuntu定制的一套软件包,含有非线程化Apache,版本是2.2,删除之后安装Apache的默认版本是2.4,而且是线程化版本。

Apache重新安装后,注意配置文件apache2.conf中增加对PHP的支持:

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

线程化版本Apache安装之后,与编译好的PHP7对接,直接提示不支持,无法运行。只好退回去安装Apache2.2的非线程化版本。

需要安装的软件包(为了找到这个老版本,还不少力气,感兴趣的可去研究apt-get和aptitude,不再详述):apache2-mpm-prefork,apache2-prefork-dev

(5)重新编译PHP7

这两个包安装之后,重新编译PHP7,按之前的方法解决出现的问题,补上缺失的软件包。编译安装完毕后,Apache+PHP7应该能跑起来了。

(6)完整的编译参数

WordPress站点已能正常运行,突然发现软件包更新有问题,才发现curl模块没有启用。参考后两个安装经验的配置参数,修改配置参数,再重新编译一次。

./configure \
    --with-apxs2=/usr/bin/apxs2 \
    --enable-mbstring \
    --enable-zip \
    --enable-bcmath \
    --enable-pcntl \
    --enable-ftp \
    --enable-exif \
    --enable-calendar \
    --enable-sysvmsg \
    --enable-sysvsem \
    --enable-sysvshm --enable-mbregex \
	--enable-xml --enable-soap  --enable-sockets --enable-opcache --enable-shmop --enable-fpm --enable-libxml --enable-inline-optimization \
    --enable-wddx \
    --with-curl \
    --with-mcrypt \
    --with-iconv \
    --with-gmp \
    --with-gd --with-xsl --with-xmlrpc --with-pear --with-pdo-sqlite --with-libxml-dir \
    --with-jpeg-dir=/usr \
    --with-png-dir=/usr \
    --with-zlib-dir=/usr \
    --with-freetype-dir=/usr \
    --enable-gd-native-ttf \
    --enable-gd-jis-conv \
    --with-openssl \
    --with-pdo-mysql=/usr \
    --with-gettext=/usr \
    --with-zlib=/usr \
    --with-bz2=/usr \
    --with-recode=/usr \
    --with-mysqli=/usr/bin/mysql_config

哈哈,编译安装后,重新启动Apache,cURL能用了,Wordpress软件包更新顺利完成。

 

Over,整个过程讲完了,提醒大家升级有风险,谨慎再谨慎,再见!

 

加入对话

  1. admin

1条评论

留下评论