PHP从7.4升级到8.1+,涉及到很多新功能与优化项,包括命名参数、联合类型、注解、构造器属性提升、match 表达式、nullsafe 运算符、JIT,并改进了类型系统、错误处理、语法一致性。以及性能改进。

Laravel从8升级到10,涉及到HTTP客户端改进,还有新的Eloquent关联关系类型以及其他各种错误修复和可用性改进。

# 一、环境安装

1、更新php 至 8.1或8.2,暂不支持8.3版本

在宝塔面板上面的软件商店安装即可

2、PHP安装以下扩展

fileinfo
opcache
redis
exif
mbstring
1
2
3
4
5

3、PHP删除以下禁用函数

putenv
symlink 
proc_open
shell_exec 
1
2
3
4

4、设置PHP命令行版本为新安装的php

5、要求 Composer 2.2.0 或更高版本,升级Composer

composer self-update
1

6、网站里面的PHP需要选择最新安装的版本

# 二、代码更新

1、 拉取最新代码

git pull ...
1

2、删除旧的composer依赖安并重新安装

rm -rf vendor
rm -rf composer.lock
composer install
1
2
3

3、清理程序缓存

php artisan optimize:clear
1

4、支付需要重新配置

微信需要申请API3密钥后,在后台重新配置

支付宝需要重新生成证书密钥配置支付宝后,在后台重新配置

微信或支付宝具体操作参考对应开放平台文档
1
2
3
4
5

# 三、可能遇见问题

# (一)宝塔安装PHP8报错 configure: error: iconv does not support errno

1、 安装最新的iconv

wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.17.tar.gz
tar -xzvf libiconv-1.17.tar.gz
cd libiconv-1.17
./configure --prefix=/usr/local/libiconv
make && make install
1
2
3
4
5

2、新建文件 /etc/ld.so.conf.d/libiconv.conf

vim /etc/ld.so.conf.d/libiconv.conf

写入:/usr/local/libiconv/lib
保存

ldconfig
1
2
3
4
5
6

3、更新配置文件 vim ~/.zshrc 加入以下 后输入命令:source ~/.zshrc

export CFLAGS="-I/usr/local/libiconv/include"
export LDFLAGS="-L/usr/local/libiconv/lib"
export LIBS="-liconv"
1
2
3

4、运行以下命令

ln -s /usr/local/libiconv/include/iconv.h /usr/include/iconv.h
ln -s /usr/local/libiconv/lib/libiconv.so /usr/lib/libiconv.so
1
2

5、把 php.sh 放入 /www/server/panel/install/php.sh 执行 php.sh

chattr +i /www/server/panel/install/php.sh
1

6、重新在宝塔面上面安装 php8.2 就可以安装成功了