您的位置 首页 php

centos7.5编译安装php7.4.30踩坑记录

因为等保安全要求,需要升级php的版本为php7.4.30. 原来的版本是7.2 ,目前爆出了不少的漏洞需要修复;唯一的办法就是升级版本。

为什么要升级到这个版本,因为这个版本是目前7.4的最后一个版本,目前发现的安全漏洞都已经进行了修复;

基本上软件版本都是这个规则,安装每个大版本的最后一个版本就对了;

下面是安装过程,记录这次安装的问题,以备后用。

环境:centos7.4 ,源码编译安装。

  1. 官网下载需要的源码

,下载需要的版本,上传到服务器,解压

2.编译

编译参数如下:

 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc
  --with-config-file-scan-dir=/usr/local/php/etc/php.d --with-fpm-user=www 
  --with-fpm-group=www --enable-fpm --enable-opcache --enable-mysqlnd 
   --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir=/usr/local
   --with-zlib --enable-xml --disable-rpath --enable-bcmath --enable-shmop
   --enable-exif --enable-sysvsem --enable-inline-optimization 
   --with-curl=/usr/local/curl --enable-mbregex --enable-mbstring 
   --with-password-argon2 --with-sodium=/usr/local --enable-gd --with-jpeg 
   --with-openssl=/usr/local/openssl --with-mhash --enable-pcntl 
   --enable-sockets --with-xmlrpc --enable-ftp --enable-intl 
   --with-xsl --with-gettext --enable-soap --disable-debug 
   --with-freetype=/usr/local/freetype 
  --with-zip --host=x86_64  

每个人根据自己的需要做调整就好了,具体支持哪些参数,可通过./configure –help 查看,每个php的版本参数不完全一样。

3.make && make install

不出意外,这个过程肯定会出错,编译安装过软件的人都知道,下面是我遇到的问题:

1.configure: WARNING: unrecognized options: –with-jpeg-dir, –with-png-dir, –with-libxml-dir, –with-gd, –enable-zip, –with-freetype-dir

版本不同,支持的参数也不同,我用的是以前版本的参数,所以有些不支持,把不支持的去掉就ok了

2.configure: error: cannot run C compiled programs.

增加编译参数 –host=x86_64

3.error: Package requirements (libsodium >= 1.0.8) were not met

yum install libsodium-devel.x86_64 ,缺少类库是比较常见的错误,一般找到对应的包安装就可以了,记得一定是***-devel的包,因为编译需要的头文件在这里面;

4.make出错,

php-7.4.30/ext/iconv/iconv.c:2583: undefined reference to `libiconv_close’

ext/iconv/.libs/iconv.o: In function `php_iconv_stream_filter_ctor’:

php-7.4.30/ext/iconv/iconv.c:2604: undefined reference to `libiconv_open’

解决方法:

修改 Makefile,找到EXTRA_LIBS=… 行末加上 –liconv,重新make

5. Requested ‘libzip >= 0.11’ but version of libzip is 0.10.1

使用yum安装的libzip版本是0.10 ,需要的最低版本是0.11 ,这也是一类常见的问题,需要自己下载源码安装,一般步骤如下

 yum remove libzip libzip-devel -y
wget 
tar -zxvf libzip-1.2.0.tar.gz
cd libzip-1.2.0
./configure
make && make install
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/"  

安装完成后,还要检查自己的程序、使用的框架是否有兼容的地方,就像我用的thinkphp5.0 ,升级版本就有出错

  Array and string offset access syntax with curly braces is deprecated[/data/wwwroot/dq.admin.shenzhenshizhi.cn/thinkphp/library/think/db/Query.php:400  

原因:从7.4以后,只能使用第一种形式$value[0]获取字符串偏移了,第二种方法$value{0}被弃用。

最后总结一下:很多人怕自己编译安装软件,因为需要解决很多软件依赖,有些类库找不到,其实遇到问题不要怕,很多问题别人都遇到过,而且有解决办法,只要不断查资料,找办法,不断测试,总结经验,慢慢就会越来越熟练。

文章来源:智云一二三科技

文章标题:centos7.5编译安装php7.4.30踩坑记录

文章地址:https://www.zhihuclub.com/149575.shtml

关于作者: 智云科技

热门文章

网站地图