查看 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
则 降级成功!