php7.4 降级 php7.1 的坑

查看 centos 版本
1、cat /etc/issue 2、cat /etc/redhat-release 3、cat /proc/version/

系统环境  centos 我7.x   通过 yum install php 和  php-fpm 自动下载最新版 目前是7.4.31 。由于 7.4 版本的Php解释器 对类型检查更加严格,它会对null类型的下标访问直接报错Trying to access array offset on value of type null。而7.1版本不会,我用的dolphinPHP 大规模的存在这个问题.  尝试修改代码 搞了一晚上,发现不是一般的难搞,只能选择 降级PHP 版本

首先找了半天以前的版本 github上面的下载速度实在是感人。 其他地方找的很艰难,后面在这个博主这里找到了这个地址: http://cn2.php.net/distributions/php-7.3.3.tar.gz 。直接把后面的版本号改成 7.1.31 也可以下载到。

也就是:

http://cn2.php.net/distributions/php-7.1.31.tar.gz

下载后解压

tar -xzf  php-7.1.31.tar.gz
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php --enable-mbstring --enable-ftp --with-jpeg-dir=/usr --with-png-dir=/usr --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pear --enable-sockets --with-freetype-dir=/usr --with-zlib --with-libxml-dir=/usr --with-xmlrpc --enable-zip --enable-fpm --enable-xml --enable-sockets --with-gd --with-zlib --with-iconv --enable-zip --with-freetype-dir=/usr/lib/ --enable-soap --enable-pcntl --enable-cli --with-curl
make 
make install

make install 阶段报错   php编译undefined reference to `libiconv 错误`

1、 ./configure 后面继续 添加 --prefix=/usr/local/libiconv
如果还是报错,可能本地没有安装 libiconv。 可以尝试 yum install libiconv
如果还是不行 再自己下载 libiconv 源码编译 链接进去? 或者
2、vi Makefile 找到 EXTRA_LIBS = -lcrypt ... 在最后添加-liconv

make install 完成后 还需要安装,实际上就是将 php 和 php-fpm 拷贝到/usr/bin 目录

cp /usr/local/php/bin/* /usr/bin && cp /usr/local/php/sbin/php-fpm /usr/bin
ps -ef|grep php-fpm 查看当前运行的 php-fpm 配置路径
一般在 /usr/local/php/etc/php-fpm.conf
或者直接 find / -name php-fpm 查找配置文件路径

这一系列做完以后 php -v  

PHP 7.1.31 (cli) (built: Dec 14 2020 02:02:12) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

则 降级成功!

 

原文地址:https://www.cnblogs.com/lesten/p/14143833.html