查看 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
則 降級成功!