分类
博客

博客PHP版本升级到7.4.3

前两天升级PHP7.4.3遇到Error 139的问题,本来以为是PHP版本的问题,今晚网友“笛声”在博客留言,说他升级成功了,所以,又想折腾一下。

首先,卸载原来使用remi源安装的libzip:

yum remove libzip5-devel-1.5.2-1.el7.remi.x86_64

然后进入php7.4.2代码文件夹,configure一下,报错No package 'libzip' found,说明卸载成功。

接下来,开始使用源码安装libzip-1.2.0,这里参考给我留言的网友“笛声”的博文 https://hqidi.com/154.html

引用一下重点:

yum remove libzip libzip-devel (如果configure libzip1.2.0报zlib版本过旧,还要再把这两个装上)

wget https://hqidi.com/big/libzip-1.2.0.tar.gz

(如果下载失效可以使用wget https://nih.at/libzip/libzip-1.2.0.tar.gz

tar -zxvf libzip-1.2.0.tar.gz

cd libzip-1.2.0

./configure

make && make install

在网上找到的教程到了这一步就直接让你继续在PHP源码目录里面执行configure程序继续配置了,其实你虽然已经安装了libzip1.2,但是PHP的configure程序依然找不到,不知道你安装在哪,你得告诉PHP的configure程序,我安装了libzip 1.2,并且安装在何处。以前是用ldconfig来通告系统所需动态库文件的位置,现在用pkg-config

我刚刚提供的方法安装的libzip默认被安装到了 /usr/local/lib 在这个目录下你能看到libzip.so libzip.so.5 libzip.so.5.0.0 还有一个pkgconfig目录。

所以,真正的解决方法来了,在你configure的会话窗口直接输入如下内容:

export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/"

上面命令的作用就是告诉configure程序,去/usr/local/lib 目录下找库文件,这样他就能找到libzip.so

此时,你继续执行php的configure将会很顺利的看到

Thank you for using PHP.

引用自 https://hqidi.com/154.html,略有修改。

通过卸载remi源的libzip,使用源码编译重装libzip-1.2.0后,再编译PHP7.4.3就完美通过了。

再次感谢热心网友提供的帮助。

分类
博客

博客PHP版本升级到7.4.2

今天看了下PHP版本,最新版本已经到了PHP7.4.3了,由于博客使用的PHP版本还是7.4.1,于是想就升级一下。

下载了7.4.3的代码,编辑后发现报错:

Generating phar.php
/bin/sh: line 1: 18054 Segmentation fault      ` if test -x "/root/php-7.4.3/sapi/cli/php"; then /root/php-7.4.3/build/shtool echo -n -- "/root/php-7.4.3/sapi/cli/php -n"; if test "x" != "x"; then /root/php-7.4.3/build/shtool echo -n -- " -d extension_dir=/root/php-7.4.3/modules"; for i in bz2 zlib phar; do if test -f "/root/php-7.4.3/modules/$i.la"; then . /root/php-7.4.3/modules/$i.la; /root/php-7.4.3/build/shtool echo -n -- " -d extension=$dlname"; fi; done; fi; else /root/php-7.4.3/build/shtool echo -n -- "/root/php-7.4.3/sapi/cli/php"; fi;` -n -d 'open_basedir=' -d 'output_buffering=0' -d 'memory_limit=-1' -d phar.readonly=0 /root/php-7.4.3/ext/phar/build_precommand.php > ext/phar/phar.php
make: *** [ext/phar/phar.php] Error 139

尝试修改 configure 选项,发现只要去掉–with-zip就可以了,但是去这个,zip 扩展就不能用了。看这个错误,应该是生成 phar 是报的错,于是禁用 phar,增加一个 configure 选项:--disable-phar,再编译就可以通过了。完整 configure 参数如下:

./configure \
--prefix=/usr/local/php/php74 \
--enable-gd \
--with-curl \
--enable-fpm \
--enable-cgi \
--with-openssl \
--enable-mbstring \
--with-pdo-mysql \
--with-zlib \
--with-zip \
--with-mysqli \
--enable-opcache \
--enable-mysqlnd \
--with-libxml \
--with-jpeg \
--with-freetype \
--with-pdo-sqlite \
--with-sqlite3 \
--enable-cli \
--enable-shared \
--enable-exif \
--disable-phar 

但是这样有个问题,禁用phar,可能composer等使用phar的相关的服务就不能用了,所以,我没安装这个版本。于是又下载了7.4.2的版本,这个版本一次性编译通过,升级成功。

至于那个Error 139的问题,猜测可能是代码BUG,那么只好跳过7.4.3这个版本,等下一个版本再看。


2020年3月3日 23:29更新:

经网友“笛声”留言提醒,PHP7.4.3版本没有问题,是我环境的问题。升级PHP7.4.3的过程,参考这里