源码编译安装php7

现在新启的项目都是采用php7了,无奈很多Linux发行版中还是php5

第三方php7源在自己本机上用用到无所谓,放到正式环境上还是有点不放心

其实编译安装也就几分钟,麻烦的是各种依赖

先删除老版本的 php 和 php-fpm

sudo dnf remove php php-fpm

首先从官方下载最新的php ( http://php.net/downloads.php )

php-7.2.6.tar.xz

步骤

tar -xvf php-7.2.6.tar.xz

cd php-7.2.6

./configure --prefix=/usr/local/php7/ --enable-mbstring --with-curl --with-gd --enable-mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-fpm --with-openssl --enable-opcache --enable-zip --with-zlib --with-freetype-dir=/usr/include/freetype2/freetype 

重点提示,虽然添加了 --with-gd ,安装完成后通过 phpinfo发现,gd只支持png,gif等  不支持 jpeg,原因不详,所以要添加 --with-jpeg-dir=/usr/local/jpeg/ 。

添加这句话之前要先安装libjpeg,官方下载最新版本 (http://www.ijg.org/files/jpegsrc.v9c.tar.gz),

还是老三样 ./configure --prefix=/usr/local/jpeg --enable-shared  && make && sudo make install

所以最后./configure因该这样

./configure --prefix=/usr/local/php7/ --enable-mbstring --with-curl --with-gd --enable-mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-fpm --with-openssl --enable-opcache --enable-zip --with-zlib --with-freetype-dir=/usr/include/freetype2/freetype --with-jpeg-dir=/usr/local/jpeg/

可以通过 ./configure --help 查看所有可用的模块,根据自己的需要添加

(这里插一句,为什么有的是-enable-** 有的是 --width-**,简单理解就是 enable的属于php自带的扩展,但是默认不开启的,--enable开头的表示这个扩展不依赖第三方的库,典型的如 --enable-opcache , --with开头的表示这个扩展依赖第三方的库,像--with-curl就依赖第三方的libcurl库,系统需要 安装这个库的开发包(头文件,共享库so文件,静态库a文件)才能通过configure配置)

configure 这一步报了错,告诉我 找不到 png.h

解决:sudo dnf install libpng libpng-devel  一般情况下缺少某个头文件,多半是没有安装 **-devel 开发包,这里可以不安装 libpng 但是需要 libpng-devel

重新configure,告诉我 cURL 没有找到或者版本低于7.15

通过 rpm -qa | grep curl   发现我安装了 curl,并且是7.43,所以问题其实就上面说道的,缺少 curl-devel

解决:sudo dnf install curl-devel

由于我本地机用了一段时间了,环境还是很给力,就没有在报依赖问题了

然后 make && sudo make install

几分钟就安装成功了

所有程序包括配置文件都安装到了我指定的目录下面

/usr/local/php7/

然后替换掉低版本的php

sudo cp /usr/bin/php /usr/bin/php5

sudo ln -s  /usr/local/php7/bin/php /usr/bin/php

sudo ln -s  /usr/local/php7/sbin/php-fpm  /usr/bin/php-fpm

安装后默认的配置文件在 /usr/local/php7/etc/ 下面  ,配置文件加了.example后缀,去掉就可以了

(插一句,有些时候很诡异,安装好后没有配置文件,不要害怕,在下载的php源代码里面可以拷贝一个 .example配置文件过来)

上一篇:bootstrop 日期控件 datepicker被弹出框dialog覆盖的解决办法


下一篇:在DOS命令中输入ipconfig /all,出现“该命令不是系统内部命令......”