当帝国php8发布后,老站的过滤就是大量插件的升迁。升迁成本过高的好,只好继续苟在7.5了。所以,今天开始发布了第一测试版本,帝国CMS7.5兼容PHP8的。
第一类问题:最大的工作量,就是数组键名要带单引号,比如
- $add[classid]=(int)$add[classid];
需要修改为
- $add['classid']=(int)$add['classid'];
三秒完成:
- find /www/wwwroot/75utf8.com/php8/upload -type f -name "*.php" -exec sed -i -r "s/(\$)([a-zA-Z_]+)[([a-z_]+)]/12['3']/g" {} +
在数据库查询语句中,
- $cr=$empire->fetch1("select newsclassid,tbname from {$dbtbpre}enewsinfoclass where classid='$add[classid]}'");
需要修改为
- $cr=$empire->fetch1("select newsclassid,tbname from {$dbtbpre}enewsinfoclass where classid='{$add['classid']}'");
二级键名需要加引号
- if(!$class_r[$classid][classid]||!$class_r[$classid][tbname])
特征是 ][tbname] 可能有点问题,先这么弄执行代码
- find /www/wwwroot/75utf8.com/php8/upload -type f -name "*.php" -exec sed -i -r "s/][([a-z_]+)]/]['1']/g" {} +
一大类错误
- $count=count($groupid);
需要修改为:
- $count=is_array($groupid)?count($groupid):0;
linux下批量检查错误的 脚本:
- #!/bin/bash
-
- # 指定要检查的文件夹路径
- DIRECTORY="/www/wwwroot/75utf8.com/php8"
-
- # 指定输出文件
- OUTPUT_FILE="111.txt"
-
- # 清空输出文件,以免之前的运行结果干扰
- > "$OUTPUT_FILE"
-
- # 使用find命令递归地查找所有.php文件
- find "$DIRECTORY" -name "*.php" | while read -r FILE; do
- # 使用php -l检查语法
- output=$(php -l "$FILE" 2>&1)
- # 检查输出中是否包含"没有错误"的特征
- if ! echo "$output" | grep -q 'No syntax errors detected in'; then
- # 如果没有"没有错误"的特征,输出文件名和错误信息
- echo "$FILE" >> "$OUTPUT_FILE"
- echo "$output" >> "$OUTPUT_FILE"
- echo "-----------------------------------" >> "$OUTPUT_FILE"
- fi
- done
其实你不想动手,也可以自行下载我们准备好的帝国CMS7.5兼容PHP8的公测版本。
强烈建议不能用于正式建站。链接: https://pan.baidu.com/s/1uwVg3BvgNRAFNk4k4H1xTQ?pwd=bxgk 提取码: bxgk 复制这段内容后打开百度网盘手机App,操作更方便哦