现在新启的项目都是采用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 --
--with-jpeg-dir=/usr/local/jpeg/enable-zip --with-zlib --with-freetype-dir=/usr/include/freetype2/freetype
可以通过 ./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配置文件过来)