安装环境检测不通过(PHP版本/扩展缺失)
报错现象:
安装向导第二步提示“PHP版本低于5.6”或“缺少curl/mbstring/openssl扩展”,点击“重新检测”依旧卡死,无法进入下一步。
原因分析:
多数插件包内置了旧版兼容层,但你的服务器PHP版本过高(如8.1+),旧函数已被移除;或者PHP配置文件php.ini中扩展未启用,导致检测脚本直接终止。
解决步骤:
杰奇CMS插件兼容性实战排障手册,从环境检测到采集报错的七类高频问题根治方案
- 登录宝塔或命令行,执行
php -v确认当前版本,若需降级,在面板中切换PHP版本(建议7.4,兼容性最稳)。 - 启用扩展:编辑
php.ini,确保以下行未被注释:extension=curl extension=mbstring extension=openssl extension=pdo_mysql保存后重启PHP-FPM。
- 若检测脚本仍报错,手动修改
install/init.php中版本判断条件,将PHP_VERSION_ID < 50600改为< 70400,跳过强制检查。 - 若缺少文件权限,执行
chmod -R 755 /你的网站目录并设置属主为www。
后台登录异常(验证码不显示或登录后跳转死循环)
报错现象:
输入账号密码后提示“验证码错误”,但页面验证码图片是裂图;或者登录成功后返回登录页,始终进不去后台。
原因分析:
插件自带验证码类库与当前PHP session配置冲突,或者config.php中authkey与数据库记录不一致,导致session校验失败。
解决步骤:
- 临时关闭验证码:打开
admin/login.php,找到if($verify != $_SESSION['verify']),注释掉这个判断。 - 清理浏览器缓存和Cookie,重新访问。
- 若仍跳回登录页,检查
config.php中的$_SC['authkey'],并同步修改数据库jiekie_config表中authkey字段值(用phpMyAdmin直接改)。 - 确保
data/session/目录存在且可写,否则session无法存储,执行mkdir -p data/session && chmod 777 data/session。
数据库连接失败(无法连接MySQL或表前缀错误)
报错现象:
前台页面显示“数据库连接失败,请检查配置文件”,或安装时填入数据库信息点“下一步”直接白屏。
原因分析:
插件默认读取config.php中的固定参数,但你的数据库端口非3306、密码含特殊字符,或者表前缀jieqi_被修改后未同步。
解决步骤:
- 编辑
config.php,检查以下内容:$_SC['dbhost'] = '127.0.0.1:3307'; // 端口必须写在这里 $_SC['dbuser'] = 'root'; $_SC['dbpass'] = '你的密码'; $_SC['dbname'] = '你的库名'; $_SC['tablepre'] = 'jieqi_'; // 如果安装时改过前缀,这里必须一致
- 若密码含或
&,用反斜杠转义或改用单引号包裹。 - 在命令行测试连接:
mysql -u root -p -P 3307,若失败则检查防火墙是否放行。 - 如果数据库地址是远程,确保
host填写内网IP而非localhost,并且MySQL授权允许该主机访问(用'user'@'%'通配)。
无法读取(列表有但点击正文空白)
报错现象:
小说章节列表正常显示,但点击章节页时正文区域空白,或只显示“内容加载中”的脚本标签。
原因分析:
插件内置的解析函数依赖file_get_contents获取远程数据,但服务器禁用了allow_url_fopen,或目标资源站返回了重定向/压缩内容导致解析失败。
解决步骤:
- 打开
include/analyse.php,将$content = file_get_contents($url);替换为CURL方式:$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate'); $content = curl_exec($ch); curl_close($ch);
- 如果仍然为空,在章节页模板中打印
$content变量,查看是否返回了“403 Forbidden”或“302跳转”提示,说明对方站封锁了你的UA,在CURL中加上:curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'); - 确认章节URL是否经过二次加密(如
base64),在analyse.php中检查解密函数是否正常,必要时手动解码测试。
页面空白或乱码(整站显示纯文字无样式)
报错现象:
前台页面是白色背景加一串黑字(如“不支持的模板类型”),或者所有中文变成问号“???”。
原因分析:
插件模板引擎未编译成功,或者数据库连接字符集与页面编码不一致(数据库是latin1,页面请求utf-8)。
解决步骤:
- 在
config.php中强制设置编码:header('Content-Type: text/html; charset=utf-8'); mysqli_set_charset($db, 'utf8mb4'); - 检查
templates/目录下是否有compiled/子目录,若无则手动创建并赋予777权限。 - 如果提示“不支持的模板类型”,打开
include/template.php,找到$type = strtolower($type);这一行,将下面switch分支中不支持的类型(如html5)统一映射为default。 - 乱码问题:用phpMyAdmin将数据库所有表整理为
utf8_general_ci,并执行SET NAMES utf8mb4;。
伪静态规则不生效(404或500错误)
报错现象:
开启伪静态后,访问/book/123.html报404,或者访问首页直接500内部错误。
原因分析:
插件自带的.htaccess或nginx规则与你的服务器环境不匹配,特别是URL中含中文字符未编码,或者重写规则中正则写错了。
解决步骤:
- Apache环境:确认
httpd.conf启用了mod_rewrite,并在网站配置中允许AllowOverride All,将插件提供的.htaccess内容粘贴到网站根目录,并删除其他重复规则。 - Nginx环境:在
server{}块中插入以下规则(核心位置):location / { try_files $uri $uri/ /index.php?$args; } location /book/ { rewrite ^/book/([0-9]+)\.html$ /module/article/reader.php?id=$1 last; }保存后执行
nginx -s reload。 - 如果报500,查看错误日志
/var/log/nginx/error.log,通常是正则中符号未转义,把([0-9]+)改写为([0-9]+)并确保括号数量闭合。 - 若规则无误但仍404,检查站点配置文件是否包含
include了插件的独立的.conf文件,将其注释掉,只用主配置。
采集模块报错(提示“站点配置错误”或“采集超时”)
报错现象:
后台“采集管理”中测试采集源返回“无法获取列表”,或采集过程中卡在30秒后报“timeout”。
原因分析:
插件内置的采集器默认超时时间为5秒,且部分目标站点需要携带Cookie才能访问,但你未配置,另外采集规则中的正则写法可能与实际HTML结构不匹配。
解决步骤:
- 打开
admin/collect.php,找到curl_setopt($ch, CURLOPT_TIMEOUT, 5);改为30,并加上CURLOPT_CONNECTTIMEOUT, 10。 - 如果目标站需要登录,在插件配置中添加Cookie头:
$headers[] = 'Cookie: 你的登录Cookie'; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
获取Cookie方式:浏览器F12→Network→复制请求头中的Cookie字段。
- 检查采集规则中正则是否使用分隔符且未转义内部斜杠,建议改用作为分隔符:
~<li>(.*?)</li>~si
- 若采集列表正常但正文为空,多半是正文分页没处理,在规则中增加
页面编码转换:$content = mb_convert_encoding($content, 'UTF-8', 'GBK');
最后提醒:以上所有修改操作前,务必备份原文件和数据库,遇到难以排查的问题时,打开你的网站根目录下的debug日志(common/debug.php),将报错级别调到E_ALL,能把具体错误行数显示出来,比任何分析都高效。



发表评论