问题简述:操作系统Ubuntu 18.04
升级到Ubuntu 24.04
,软件包全部升级了一遍,导致typecho出现兼容性问题,具体表现为登录admin后台浏览器收到500
的错误代码。
- typecho版本:1.1 (17.10.30)
- PHP版本:8.3.6 (built: Sep 30 2024 15:17:17)
登陆服务器查看一下错误日志:cat /var/log/nginx/error.log | tail -n 5
nginx错误日志如下:
1 | FastCGI sent in stderr: "PHP message: PHP Warning: Trying to access array offset on null in admin/common.php on line 32" |
通过偏移量访问了空数组类型,那就加上类型判断,类型为空就返回null:vim admin/common.php
1 | //$params = parse_url($currentMenu[2]); |
修改后,通过浏览器继续触发报错,排查错误日志:
1 | FastCGI sent in stderr: "PHP message: PHP Fatal error: Array and string offset access syntax with curly braces is no longer supported in var/Json.php on line 32" |
这里PHP8.3对语法做了调整,不再支持使用大括号{}
访问数组,统一把{}
改为[]
:vim var/Json.php
1 | //$bytes = (ord($utf16{0}) << 8) | ord($utf16{1}); |
{}
混用的地方非常多,都是这同一个原因报错,改了很多处后,问题解决。