常见问题汇总:常见问题
模板目录无法写入
后台修改或创建模板时提示以上信息怎么办?
如果你是linux服务器的话,需要给模板目录可写入权限才行:
chmod 777 -R /网站目录路径/template/
把上面的网站目录路径改成你自己的
系统不允许创建和修改模板文件
为了系统安全,cms默认是不允许直接修改模板文件的,当修改模板文件时提示
系统不允许创建和修改模板文件 目前没有开启可编辑文件权限,只能查看和浏览文件
我们需要手动通过ftp修改index.php文件
// 是否允许后台修改模板文件 define('IS_EDIT_TPL', 0);
把0设置为1,以下代码所示
// 是否允许后台修改模板文件 define('IS_EDIT_TPL', 1);
系统没有设置默认注册的用户组
当你注册时提示下面消息时:
表示没有开启注册用户组,开启方法:
1、设置允许注册的用户组
2、设置默认注册组
3、保存并更新缓存生效!!
上传字段未定义
在后台上传文件时,突然提示:
上传字段未定义
后台提示这个时候,可能是因为你使用了会员登录而引起的,还原会员登录操作即可
点一下用户中心即可还原前台登录
不能申请其他用户组
不能申请其他用户组
说明当前用户已经拥有了一个用户组,不能同时拥有多个组了,开启方法:
商城模块列出用户购买产品列表
系统未设置附件缓存时间
开启附件缓存可以大大提高附件信息读取的效率,同时cache/attach目录会生成大量附件缓存文件,建议cache使用ssd盘效率最高
开启缓存方法:
需要开启缓存开关、设置网站附件缓存时间,建议设置24小时以上
无权限登录此站点
登录后台提示:
无权限登录此站点
说明该管理员不具备站点管理权限,设置方法:
1、进入权限管理,查看可管理的站点数
2、设置站点权限,勾上管理的站点
3、保存并更新缓存生效
用户投稿提示:验证码不正确
用户中心,发布内容时,提示验证码不正确,页面并没有验证码字段
解决方案:
找到用户中心发布页面模板:template/pc/default/member/module_post.html
增加验证码代码:
{$myfield} -------这里是增加的部分---------- {if $is_post_code}{/if}
系统未开启缓存功能
开启方法:
重置后台密码
admin后台密码忘记重置方法
1、通过PHPmyadmin工具管理数据库
2、找到表dr_member,找到admin账号记录
3、将password值改为:
62e69b828c74c50a1f6e93227cdf7e77
3、将salt值改为:
8d6dc35e50
4、这样密码就修改成了:admin
-------------------sql语句-------------
UPDATE `dr_member` SET `password` = '62e69b828c74c50a1f6e93227cdf7e77', `salt` = '8d6dc35e50' WHERE `username` = "admin";
您的用户组无权限访问模块
访问模块提示以下信息时怎么办?
您的用户组无权限访问模块
需要设置访问权限,访问权限只区分前端用户组(超级管理员也可能会无法访问)
开启了访问权限,超级管理员也会无法访问怎么办?
原因是超级管理员账号xxxx没有在指定的用户组里面,在用户管理搜索超级管理员xxx账号,并分配用户组权限即可
如何关闭https访问
一不小心开启了https,导致网站无法打开,怎么还原成http
首先让你的服务商帮你把服务器里面的ssl功能关闭
然后配置程序:
1、需要手动打开文件:cache/config/system.php
找到SYS_HTTPS
设置为0即可!
2、打开根目录的index.php
// 手动修复https识别文件 define('IS_HTTPS_FIX', 1); 如果存在这句话 删除 删除 删除 删除 删除
图片专用字段怎么调用
图片专用字段怎么在show.html页面中调用?
{loop $字段名称 $tt} {dr_get_file($tt)} {/loop}
您所在用户组不允许上传文件
提示信息为:
您所在用户组不允许上传文件
需要开启账号所在的用户组上传附件的权限
开启了权限,超级管理员也会无法上传怎么办?
原因是超级管理员账号xxxx没有在指定的用户组里面,在用户管理搜索超级管理员xxx账号,并分配用户组权限即可
系统没有安装内容模块
当前网站未开启首页静态功能
点击生成首页,提示
当前网站未开启首页静态功能
需要开启首页静态
我移动端已经做了模板,访问移动端网站也正常,但是点生成首页,提示移动端(0)怎么办?
开启下面的按钮即可
icon图标不显示解决方案
图标不显示解决方案
原因是当前访问的域名和网站的主域名不一致导致的图标不显示
一般情况下只配置主域名的站点,子站都不需要配置;但某些环境不仅需要配置主站还要子站才会生效。
1、apache 在httpd.conf 尾部加上
LoadModule headers_module modules/mod_headers.so
# Make sure proxies don’t deliver the wrong contentHeader append Vary User-Agent env=!dont-vary Header set Access-Control-Allow-Origin "*"
也可以直接在网站根目录.htaccess文件中添加如下代码
# Make sure proxies don’t deliver the wrong contentHeader append Vary User-Agent env=!dont-vary Header set Access-Control-Allow-Origin "*"
2、Nginx 在域名.conf 内部加上(补充:服务器如果安装宝塔,直接点击站点设置-配置文件,搜索'#SSL-START SSL相关配置',在上面粘贴以下代码,刷新后台即可解决此问题)
location ~* \.(eot|ttf|woff|svg|otf|woff2)$ { add_header Access-Control-Allow-Origin *; }
3、 Iis 服务器需要设置mime类型
4、如果用了CDN的话,需要配置HTTP头
5、phpstudy_pro
查看系统错误日志
当系统出现以下提示文字时:
系统故障 500服务器错误
等信息时,需要查看错误日志来分析错误原因
一般情况,PHP错误和系统错误都要看日志
文件路径:cache/error/
把错误文件内容发给官方就行了,文件格式是:
log-当天时间.php
常见错误解决方案:
1、数据库账号不对
表示数据库账号和密码不匹配
检测方式:https://www.xunruicms.com/doc/858.html
2、用Google浏览器打开,用F12开发者调试工具侦探结果
当https模式下,表示跨域请求了
解决方案:https://www.xunruicms.com/doc/751.html
3、同样用Google浏览器打开,用F12开发者调试工具侦探结果
以上的红色提示说明两个域名不一样的情况下,是不能提交的,需要把提交域名和当前域名设置一样(子域名也属于不同的域名)
4、mb扩展没有安装
需要在php环境中安装mb_substr支持
方法方案:百度搜索 php开启mb_substr
5、unknown storage engine innodb
在my.ini中配置,default-storage-engine=INNODB“。重启mysql服务
您所在用户组不允许下载附件
提示信息为:
您的用户组不允许下载附件 您所在用户组不允许下载附件
需要开启账号所在的用户组下载附件的权限
开启了权限,超级管理员也会无法下载怎么办?
原因是超级管理员账号xxxx没有在指定的用户组里面,在用户管理搜索超级管理员xxx账号,并分配用户组权限即可
页面幻灯图片、轮播图片设置方法
在网站中经常遇到的是页面轮播图片管理和页面幻灯图片管理,我们CMS提供多种轮播图解决方案,各有优缺点
一、使用自定义资料
1、需要在后台应用市场下载这个插件
2、安装好【自定义资料】插件后,进入插件管理界面
3、添加自定义资料
保存之后,可以在列表查看调用方法
二、使用网站表单来实现
网站表单是内置功能,不需要任何插件
1、新建网站表单
、
2、保存确定
3、进入表单自定义字段里面
4、添加,单文件类型的字段,用于上传文件用
5、更新缓存生效,然后刷新后台,在内容菜单下,进入轮播图片管理
6、进入添加界面,即可上传图片
7、在前台怎么调用这些表单数据呢?
看手册:http://help.xunruicms.com/56.html
三、使用轮播图管理插件
插件地址:https://www.xunruicms.com/shop/719.html
前面的方法比较麻烦,适合对CMS比较熟悉,有一定的动手能力。
对于小白新手来讲,安装使用《轮播图管理》插件就是最好的使用方法。
仅需简单三步即可:
第一步:后台应用市场在线安装《轮播图管理》插件
第二步:后台直接添加图片,无需各种创建操作。
第三步:后台直接复制前端调用代码。
列表循环中调用模块附表字段(内容字段在列表显示)
CMS模块内容设计分为主表和附表
主表:存储的字段用于列表循环和搜索
附表:存储的字段用于内容页显示(原则上不能出现在列表显示)
设计附表是为了减轻主表的查询压力,把一些不常用于列表的字段放在附表中; 如果非要把附表字段用在列表循环里面,就违背了附表的设计理念,这样想法是不效率的,非要做的话有两种解决方法
例如news模块的附表的content字段,我想在列表显示
方法一、通过PHPmyadmin工具手动把content改为主表(需要有数据库基础,没有技术基础请看下面的方法)
操作数据库需要提前备份数据,以免数据丢失不可逆转。
1、进入cms自定义字段里面,找到content字段的id号
2、dr_field表,通过content的id编号,找到content字段的数据
把0改成1
3、进入模块主表的数据表 dr_1_xxxx,新建一个content字段
4、然后进入模块附表数据 dr_1_xxxx_data_0,将附表的数据复制到主表的content字段中:
UPDATE `dr_1_xxxx` a, `dr_1_xxxx_data_0` b SET a.`content` = b.`content` WHERE a.id = b.id;
如果有多个附表就执行多次后缀_1,_数字
5、然后再手动删除附表dr_1_xxxx_data_0的content字段,删掉
6、然后进入cms后台更新缓存即可
方法二、不禁用本身的content字段,列表循环标签改一下:
join=1_news_data_0 on=id
例如列表循环时,加上的效果
{module catid=$catid join=1_news_data_0 on=id order=updatetime page=1}
这个写法仅限于5万以内的数据
这个方法效率远远没有方法1高
方法三:在循环中进行二次调用content标签,这种写法效率最低,会影响整个页面的查询速度
{module module=news ******* return=r} {content module=news id=$r.id} 标题:{$t.title} 内容:{$t.content} {/content} {/module}
后台入口地址忘记了
后台入口文件不小心删除了、后台路径的名字忘记了怎么办?
非常好办,去官网下载一份全新的CMS程序,找到里面的admin.php
把admin.php上传到你的网站上去
再通过域名访问这个admin.php就可以进入后台
关闭后台验证码关闭
一不小心开启了后台验证码,然后发现后台验证码不显示,这样会导致无法登陆后台
手动关闭方式:
1、打开文件
/cache/config/system.php
2、将下面的值设置0
为什么会验证码不显示?
1、系统体检一下,看看环境是否正常
2、文件检测一下,看看有木有异常文件
用户投稿如何取消验证码
这个问题属于用户权限问题
按每个栏目进行划分权限,为每个用户组取消验证码即可
禁止前端提交表单
禁止前端提交表单
需要在表单设置里面开启即可
CSRF跨站验证禁止此操作
CSRF(Cross Site Request Forgery, 跨站域请求伪造)
跨站点请求的原理就是用户A在站点1发布上传粘贴了一个站点2的URL,用户B不明就里的点击了站点2的URL,而这个URL因为是伪装请求站点1修改密码(其它危险请求)的操作,此时用户A就已经获取了用户B的账户信息。
在xunruicms可以很方便的使用token的方式来防范这种威胁,由于这个token是我们服务端动态输出的,伪装者的服务器没法获取该值,此时我们再做好服务端验证这个token是否有效即可。
在每次进行post操作之后系统都会进行重置token值,保障token安全性。
系统开启跨站验证时,将禁止外部站的提交数据,每个form表单都必须加上函数:
{dr_form_hidden()}
自定义跨站验证:https://www.xunruicms.com/doc/800.html
关闭跨站验证(强烈要求不关闭,要开启):
--------------------
当无法进入后台的关闭方法:
1、打开文件cache/config/system.php
2、找到下图位置,改为0即可
外部网站提交本站表单
在外部网站调用本站表单并提交数据给本站,这种情况下默认是被宸逸cms拦截的,默认环境下禁止外部提交数据到本站,这是安全因素
案例:本站的网站表单,打算放在其他网站上提交并收集数据
1、更改xunruicms的index.php,增加下面一句:
header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE"); header('Access-Control-Allow-Headers:x-requested-with,content-type');
2、在表单管理预览你的表单
3、在预览界面查看页面源代码,并复制form的全部内容
把这里面的所有html复制出来,放在外部网站上,用来提交的
4、粘贴在外部网站,并设置域名
5、关闭xunruicms后台的,禁止跨站开关
6、关闭表单验证码
就ok了
为什么有些模块不能安装成共享
通过cms后台自己创建的模块可以安装为共享模块和独立模块。
但是
cms本身已经自带的模块或者应用市场的插件模块,有些不能选安装模式,是因为他们已经设定好了安装模式,无法变更;
如果强制变更安装模式可能会引起插件或模块的不稳定情况。
服务器无法识别HTTPS证书
系统体检时提示:服务器无法识别HTTPS证书
方案一:服务器开启强制https模式,我们以宝塔服务器为例:
开启这项就ok了
如果还是不行,就往下
方案二:让服务商帮你修改服务器配置,文章内容来自网上,内容如下:
检查nginx反向代理配置文件的ssl配置部分。
upstream xxxx.com { server 10.10.10.208:80; } server{ listen 443; server_name xxxx.com; ssl on; ssl_certificate /etc/nginx/crt/xxxx.com/xxxx.com.crt; ssl_certificate_key /etc/nginx/crt/xxxx.com/xxxx.com.key; ssl_session_timeout 5m; location / { proxy_pass http://xxxx.com; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
发现上述配置文件ssl证书正常,但是PHP获取不到X-Forwarded-Proto或者HTTPS的变量值,尝试在反向代理配置中加入以下配置:
proxy_set_header X-Forwarded-Proto $scheme;
再次通过php调试打印出现https内容:
[HTTP_X_FORWARDED_PROTO] => https [HTTPS] => on
再次访问PHP的内容已经恢复正常。
Apache中的配置
RequestHeader set X-Forwarded-Proto "https"
X-Forwarded-Proto(XFP)报头是用于识别协议(HTTP 或 HTTPS),其中使用的客户端连接到代理或负载平衡器一个事实上的标准报头。您的服务器访问日志包含在服务器和负载平衡器之间使用的协议,但不包括客户端和负载平衡器之间使用的协议。要确定客户端和负载平衡器之间使用的协议,X-Forwarded-Proto可以使用请求标头。
此标头的标准化版本是 HTTP Forwarded标头。
句法
X-Forwarded-Proto:
指令
转发的协议(http 或 https)。
例子
X-Forwarded-Proto: https
其他非标准形式:
# Microsoft Front-End-Https: onX-Forwarded-Protocol: https X-Forwarded-Ssl: on X-Url-Scheme: https
如果还是不行,就往下
方案三:手动设置https识别方法,打开根目录的index.php
// 手动修复https识别文件 define('IS_HTTPS_FIX', 1);
把这段代码放到index.php里面,如下所示
游客不允许上传附件
游客不允许上传附件
循环中的隔行显示
比如在循环中实现每隔5条记录,加一个隔行符号
实现原理:
方法一:用循环次数变量除于5,如果被整除,表示可以输出隔行符号了
实现代码:
{php $hang = 1;} //初始化行变量 {循环标签开始********} *********** {if $hang%5 == 0} 表示第5行了,可以在这里加上隔行符号
{/if} ******* {php $hang++;} //累计行变量写在结束标签上一行 {循环标签结束********}
方法二:将结果数组按N个进行拆分为子数组,就可以很方便的循环出来了
例如:
使用php自带的函数:
array_chunk
实现代码:
通过module标签先查询出结果集 {module module=news order=updatetime}{/module} ----------- 通过php自带的函数按每行2个进行拆分 {php $arr=array_chunk($return, 2, true);} 再通过循环变量拆分后的数据进行输出 {loop $arr $i $a}
F12数据提交侦探工具
F12开发者工具适用于Google Chrome浏览器,开启方法:
1、使用google浏览器打开网站
2、单击页面选择 检查
3、浏览器的下方或左侧会出现一个代码调试器窗口
4、我们选择”Network“,表示网络提交请求记录
5、打开后,我们点击内容保存,这样他会有一个请求记录,如下图
我们单击这个请求记录,就可以看出提交的数据详情、数据格式、返回错误等问题了
账号被锁定,禁止登陆
管理账号提示:
账号被锁定,禁止登陆
此时无法登陆后台,需要开启开发者模式:
https://www.xunruicms.com/doc/204.html
开发者模式开启后,账号会被忽略调用禁止登陆,然后再前往用户中心,修改这个账户的锁定状态
失败次数已达到N次,已被禁止登录
管理账号提示:
失败次数已达到N次,已被禁止登录
此时无法登陆后台,需要开启开发者模式:
https://www.xunruicms.com/doc/204.html
开发者模式开启后,账号会被忽略调用禁止登陆
登录/注册后跳转到指定页面
方法一、url链接模式
需要改造登录链接
登录:{dr_member_url("login/index", ["back" => urlencode("http://qq.com")])} 注册:{dr_member_url("register/index", ["back" => urlencode("http://qq.com")])}
这样写会自动跳到指定域名
方法二、form内部设定
写在提交按钮的上方位置
此字段在前端不可用
当后台编辑用户时,发现部分字段提示:
此字段在前端不可用
表示这个字段没有归属到你这个用户的所属用户组中,操作方法
1、为这个字段划分用户组
2、回到用户资料中,查看这个用户的组,是不是上面划分的组
这样就ok了
is writeable by group
网站提示Internal Server Error File"/home/xxx/public_html" is writeable by group 错误
当你打开网站出现下面的错误提示,说明你的网站程序文件或者文件夹使用了777权限后。需要在空间控制面板里把文件修改回755权限。
下面是处理方法:
1.登录空间控制面板,并打开文件管理器:
2.打开空间根目录【public_html】:
3.如图,全选文件,输入“755”并勾选【递归】,然后点击【设置权限】:
4.完成修改后,可以看到所有文件及文件夹均为755权限。
切记,不可以将文件夹及文件设置777权限。
5.完成以上修改设置后,刷新你的网站即可!
判断终端/判断客户端
获取客户端UA字符串:
\Phpcmf\Service::L('input')->get_user_agent()
在模板中判断终端
{if \Phpcmf\Service::IS_PC_USER()} 是电脑端端的访客 {/if} {if \Phpcmf\Service::IS_MOBILE_USER()} 是移动端的访客 {/if} {if dr_is_weixin_app()} 来自微信app的公众号里面 {/if}
在php程序中判断终端
if (\Phpcmf\Service::IS_PC_TPL()) { // 调用的pc模板 } if (\Phpcmf\Service::IS_MOBILE_TPL()) { // 调用的移动端模板 } if (\Phpcmf\Service::IS_MOBILE_USER()) { // 来自移动端的访客 } if (\Phpcmf\Service::IS_PC_USER()) { // 来自PC端的访客 } if (dr_is_weixin_app()) { // 来自微信app的公众号里面 }
当前级别不允许升级
点等级升级时提示:
当前级别不允许升级
可能是当前账号没有级别数据,需要管理员在后台给当前账号手动设置一个级别,才能进行自助升级
封面栏目无法生成静态的分页文件,无法下一页
什么是封面栏目?封面栏目是最终栏目的父级栏目,如下图
存在子栏目的栏目叫做封面栏目,他不具备生成静态的第二页功能,只有最终栏目才能生成分页文件
最终栏目默认模板:list.html
封面栏目默认模板:category.html
封面栏目想实现分页,
模块父栏目默认情况下是不允许发布内容的,开启方法
1、进入模块管理,选择某个模块,点配置
2、开启父栏目发布
3、回到栏目管理界面,父栏目就可以发布了
用户注册协议
用户注册协议内容模板地址:
template/pc/default/member/protocol.html
禁止地址的301跳转
为了网站地址的唯一性,当在地址后面加参数时会自动跳转到正规的地址
改成自由参数即可
另外一种方法:可以通过配置文件的方式取消301跳转
用Notepad++工具打开index.php (不要用记事本)
define('IS_NOT_301', 1); // 取消301跳转
调整上传字段的大小格式
例如已创建好的字段,调整其大小格式:!
找到定义字段的地方,如上图就是模块内容字段
再找到对应的字段,点修改按钮,调整文件大小
关于大文件上传的服务器配置就教程: https://www.xunruicms.com/doc/20.html
此栏目是动态地址,无法开启静态
提示
此栏目是动态地址,无法开启静态
需要将本栏目的地址改成静态地址才能开启
需要给栏目设置url规则
此模块是动态地址,无法开启静态
提示
此模块是动态地址,无法开启静态
需要给独立模块开启地址规则
移动端首页无法生成静态
1、检测mobile目录是否可写
2、检测是否开启移动端静态
不能同时拥有多个用户组
需要开启一个账号允许多个用户组
关键字不得少于系统规定的长度
关键字不得少于系统规定的长度
列表中调用多图显示的文章
有的新闻是单图模式,有的新闻是多图模式(如下图)。
如果内容有3张图以上的显示下面多图模式,如果少于3张图的显示单图模式。
方案一、创建多图字段,把默认的thumb缩略图禁用掉
1、创建多图字段,类型为image,名称为xinsuoluetu
2、禁用之前的thumb字段
3、进入发布页面,发布文章时上传多张图
4、重要部分,就是列表如何去调用它了
{if dr_count($t.xinsuoluetu) >= 3} 3张以上就显示全部 {loop $t.xinsuoluetu $tt}{/loop} {else} 不满足3张的,显示一张
{/if}
方案二、提取内容中的图片
1、首先要获取内容字段,参考教材方案:https://www.xunruicms.com/doc/678.html
2、提取内容字段中的图片,比如内容字段是content
{php $imgs = dr_get_content_img($t.content);} {loop $imgs $img}{/loop} 图片总数量:{dr_count($imgs)}
提取3张图片写法:
{php $imgs = dr_get_content_img($t.content, 3);} {loop $imgs $img}{/loop} 图片总数量:{dr_count($imgs)}
恢复后台菜单
初始化后台菜单操作
初始化完成后,按F5刷新整个浏览器后台界面即可
------------------------------
如果后台菜单都被删除了怎么办?
1、输入地址:
admin.php?c=menu&m=init
2、初始化菜单成功,请按F5刷新整个页面
3、然后继续输入地址:
admin.php?c=menu
4、正常情况下可以看到菜单数据
5、更新缓存完事
阅读统计: id参数不完整
1、保存到草稿箱的文章进行预览的时候提示“阅读统计:id参数不完整”
https://www.xunruicms.com/doc/609.html
2、放在列表页面出现的错误
{dr_show_hits($t.id)}
外部页面 登录/注册
使用环境:在首页或其他页面进行注册或登录功能、绑定独立域名的页面上登录功能。
一、登录功能
二、注册代码
{php extract(dr_get_register_value());}调试信息:{$debug}
如果指定用户组注册时可以改变函数参数:
{php extract(dr_get_register_value(222))} 222表示用户组的id号
三、如果注册其他用户组怎么办改?
只需要改变一下注册按钮参数
8888888就改成你要注册的用户组id号
四、登录或注册后跳转到指定url写法
只需要在提交的函数加一个back参数:
&back={urlencode('http://www.baidu.com')}
登录示例:
还可以这样写:
五、点击登录或者注册按钮没有反应
这时候需要检查下是否引用了官方js库(cms.js)
https://www.xunruicms.com/doc/627.html
域名改错了怎么还原
不小心把域名改了导致域名没法访问的时候,怎么还原到老域名
1、打开文件cache/config/site.php
域名改成老的域名
2、然后就能正常登陆后台了
3、进入后台,网站设置,变更域名,输入老域名即可还原
www域名301
一般情况下,网站主要域名是带www开头的,例如:
www.xunrui.com
有时候,开发者想把不带www的域名定向到主域名,把不带www的域名301到带www的域名,例如
xunruicms.com 定向 到 www.xunruicms.com
这种方法有很多,百度搜索一大堆:
https://www.baidu.com/s?ie=UTF-8&wd=不带www定向到www域名
常见设置方法:
1、如果是bt面板可以通过bt后台设置域名定向
2、如果是虚拟主机,一般主机管理平台有定向设置方法
3、如果(1和2)都没有地方设置,就在程序配置里面设置
打开index.php
$host = strtolower($_SERVER['HTTP_HOST']); if ($host == 'xunruicms.com') { // 这里是不带不带不带www的域名,需要改成自己的域名 header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.xunruicms.com");exit; // 这里是带带带www的域名,需要改成自己的域名 }
F12开发者工具查看JS报错情况
F12开发者工具适用于Google Chrome浏览器,开启方法:
1、使用google浏览器打开网站
2、单击页面选择 检查
3、浏览器的下方或左侧会出现一个代码调试器窗口
4、如果存在js错误会有红色×标记,点击这个x按钮
这里就能看到页面的js错误情况
前端无法进行拖动排序
1、在使用自定义字段时,后台可以实现拖动排序,前台却不能实现拖动排序
2、debug报错
Uncaught TypeError: $(...).sortable is not a function
需要加载jqueryui的js
阅读量不统计
show.html
阅读量代码:
{dr_show_hits($id)}
内容的点击量均为0,不统计的情况下。
可能是你没有加载关键js文件:
https://www.xunruicms.com/doc/627.html
移动端评论表单无法加载自定义字段
评论字段属于ajax二次加载,某些浏览器不会二次执行js文件,当出现某些字段无法正常使用时,而且debug中的js报错的情况,需要手动加载
需要把以下js文件写在show.html文件中
1、files多文件字段
2、image图片字段
变更系统缩略图默认无图时的图片
针对dr_thumb调用缩略图时:
系统缩略图函数调用图片时,如果没有图片将会出现以下图片填充:
开发者只需将此文件手动修改成你需要的内容即可:
/static/assets/images/nopic.gif
当模块域名绑定错了如何恢复
如果把模块域名绑定到了主域名上会导致无法正常访问后,当访问后台时直接进入了模块管理目录,如下图:
如何恢复域名绑定呢?
1、打开文件 cache/config/domain_app.php
配置设置空白的
2、这时候就可以进入后台了
3、进入后台,在下面部分去掉你绑定域名
4、去掉后,更新缓存就行了
模板文件不存在
访问页面提示:模板文件不存在
这个时候我们可以开启开发者模式:https://www.xunruicms.com/doc/204.html
这个时候就可以看到具体是哪一个模板缺少了,方便直接按照上面的路径来创建模板
404 - 页面不存在
访问页面提示:404 - 页面不存在
这个情况说明url地址对应的参数不存在的,找不到控制器导致
这个时候我们可以开启开发者模式:https://www.xunruicms.com/doc/204.html
这时候可以看到本页面的具体url,在通过这个url来分析404的原因
您的用户组无权限提交
当评论提交时提示:您的用户组无权限提交
这时候需要开启评论权限
权限-用户权限-内容-模块选择-评论开关
DISTINCT Expression #1 of ORDER BY clause is not in SELECT list, references column
使用DISTINCT语句报错时:
Expression #1 of ORDER BY clause is not in SELECT list, references column '' which is not in SELECT list; this is incompatible with DISTINCT
问题原因:mysql5.7.5及以上版本将sql_mode的ONLY_FULL_GROUP_BY模式默认设置为打开状态,会导致一些错误
解决方案:
通过修改mysql的配置文件my.ini,关闭ONLY_FULL_GROUP_BY SQL模式
文件底部追加:
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
生成静态提示:地址不规范
原因很简单,你看错误提示很明显了,这是动态地址,怎么可能被生成能,解决方案:
需要把这些动态地址改成静态地址
可以通过前面章节提到的自定义url教程来设置;如果如果如果如果如果如果如果你设置了自定义url,新增的文章是自定义地址,老文章是动态地址怎么办?
1、进入内容维护工具
2、批量更新url地址即可
数据库挂了
数据库挂了常见错误提示
这个时候可以找到错误日志看看:
cache/error/当天日期.php
数据库配置文件位于:config/database.php
错误日志一般有这种提示:
1、数据库连接问题
connenion timed out
说明数据库服务挂了,重启一下试一试
2、表示数据库账号和密码不匹配
3、数据库连接不上
由于目标计算机积极拒绝,无法连接
需要使用官方test.php工具查看原因
https://www.xunruicms.com/doc/396.html
例如数据库挂了会提示详细的报告:
robots.txt的配置介绍
robots是网站跟爬虫间的协议,用简单直接的txt格式文本方式告诉对应的爬虫被允许的权限
通常默认写法是:
User-agent: * Allow: /
推荐使用站长工具来生成配置文件:http://tool.chinaz.com/robots/
Robots.txt 是存放在站点根目录下的一个纯文本文件。虽然它的设置很简单,但是作用却很强大。它可以指定搜索引擎蜘蛛只抓取指定的内容,或者是禁止搜索引擎蜘蛛抓取网站的部分或全部内容。
使用方法:
Robots.txt 文件应该放在网站根目录下,并且该文件是可以通过互联网进行访问的。
例如:如果您的网站地址是 http://www.xunruicms.com/那么,该文件必须能够通过 http://www.xunruicms.com/robots.txt 打开并看到里面的内容。
格式:
User-agent:
用于描述搜索引擎蜘蛛的名字,在" Robots.txt "文件中,如果有多条User-agent记录说明有多个搜索引擎蜘蛛会受到该协议的限制,对该文件来说,至少要有一条User-agent记录。如果该项的值设为*,则该协议对任何搜索引擎蜘蛛均有效,在" Robots.txt "文件中,"User-agent:*"这样的记录只能有一条。
Disallow:
用于描述不希望被访问到的一个URL,这个URL可以是一条完整的路径,也可以是部分的,任何以Disallow开头的URL均不会被Robot访问到。
举例:
例一:"Disallow:/help"是指/help.html 和/help/index.html都不允许搜索引擎蜘蛛抓取。
例二:"Disallow:/help/"是指允许搜索引擎蜘蛛抓取/help.html,而不能抓取/help/index.html。
例三:Disallow记录为空说明该网站的所有页面都允许被搜索引擎抓取,在"/robots.txt"文件中,至少要有一条Disallow记录。如果"/robots.txt"是一个空文件,则对于所有的搜索引擎蜘蛛,该网站都是开放的可以被抓取的。
#:Robots.txt 协议中的注释符。
综合例子 :
例一:通过"/robots.txt"禁止所有搜索引擎蜘蛛抓取"/bin/cgi/"目录,以及 "/tmp/"目录和 /foo.html 文件,设置方法如下:
User-agent: *
Disallow: /bin/cgi/
Disallow: /tmp/
Disallow: /foo.html
例二:通过"/robots.txt"只允许某个搜索引擎抓取,而禁止其他的搜索引擎抓取。如:只允许名为"slurp"的搜索引擎蜘蛛抓取,而拒绝其他的搜索引擎蜘蛛抓取 "/cgi/" 目录下的内容,设置方法如下:
User-agent: *
Disallow: /cgi/
User-agent: slurp
Disallow:
例三:禁止任何搜索引擎抓取我的网站,设置方法如下:
User-agent: *
Disallow: /
例四:只禁止某个搜索引擎抓取我的网站如:只禁止名为“slurp”的搜索引擎蜘蛛抓取,设置方法如下:
User-agent: slurp
Disallow: /
分辨率太大导致服务器内存溢出
在错误日志中提示:
图片[*******]分辨率太大导致服务器内存溢出,无法进行缩略图处理,已按原图显示
这种情况是因为使用了dr_thumb,图片尺寸太大,导致了内存溢出,PHP内存已被消耗光了
比如这个图片分辨率太高了,而内存使用量算法是
(图片分辨率,图片对象的width和height )X(图片的通道数,一般是3)X 1.7
结果为:
1876*8064*3*1.7 ≈ 73MB
意味着,PHP处理这张图片至少需要73MB内存,再加上程序的消耗内存,保守需要150MB(73MB*2)的内存空间了,一般系统设置的PHP内存上限一般在100Mb,所以是不够内存消耗的。
在后台-服务菜单可以看到下图:
在php.ini中调整参数memory_limit值,设为512M,或者更大
无法通过id找到共享模块的模块目录
访问文章内容页面提示:
无法通过id找到共享模块的模块目录
可能性一:伪静态不规范导致的
如果设置了的伪静态地址时,你可以还原到默认动态地址访问试一试 ,
如果动态地址ok伪静态不正确时,就说明解析规则或者地址规则不规范;
如果动态地址也是这种提示,就是数据不完整导致,见下方情况
可能性二:数据不完整
这个提示八成是因为非正常入库到账的,少入库了一张表,如果是正常在后台发布的内容,是不可能出现这种错误的。
是少了哪种表呢?
模块表入库一般有这几张表:
dr_1_demo 内容主表 dr_1_demo_index 内容索引表 dr_1_demo_data_0 内容附表
共享模块必须入库:
dr_1_share_index
如果这个表没有入库,就会提示上面的信息,找不到模块目录
可以参考内容入库规则:https://www.xunruicms.com/doc/1011.html
Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operatio
搜索带表情符号的内容时,会出现以下的错误:
Illegal mix of collations for operation 'UNION'
Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like'
解决方案:
mysql数据库的字符集需要改成:utf8mb4_general_ci
操作步骤
1、使用phpmyadmin工具,选择当前的数据库
2、然后一下图的选项,点执行
这样就把格式批量转换了。
3、打开数据库配置文件config/database.php
加上以下参数
'charset' => 'utf8mb4', 'DBCollat' => 'utf8mb4_general_ci',
-----------------------------------阿里云虚拟主机设置方法-------------------------------
404页面设置/404状态码
404文件状态码为:404;
当系统开启过开发者模式时404的状态码是:200,目的是方便开发者调试。
类似于这种网页的404状态码,他会主动调用服务器设置的404文件,如果没有设置这个文件就按cms的内容展示,下面介绍设置方法:
网址的404页面可以在服务器软件里面定义,我们以Nginx为例子,定义文件方式为:
代码如下:
error_page 404 /404.html; # 承接上面的location。 location = /404.html { # 放错误页面的目录路径。 root /www/wwwroot/www.xunruicms.com; }
那么404文件路径就是这样:
/www/wwwroot/www.xunruicms.com/404.html
我们测试代码如下:
404 404,您请求的文件不存在!
再次访问之前的404页面就变成这样了
Unknown storage engine 'InnoDB'
Unknown storage engine 'InnoDB'
原因是你的当前数据库不知此InnoDB数据格式,一般mysql5.7以上都不会报这个问题。
可以尝试升级mysql版本到5.7以上,或者以下方案排查
解决方案:
尝试一:将my.ini配置文件的isasm改成InnoDB。这个是之前参考博客完成。但是这个没有奏效。
尝试二:想到这个应该是没有完成服务器的重启,但是通过phpstudy重启时候发现失败,因为点击重启时候发现占用,点击停止之后还是重启,但是就是没有停止之后再重新启动。但是还是失败,估计至这个phpstudy的版本有些问题,需要花时间重新弄一下。
尝试三:接着通过mysqld命令及进行尝试,先停止之后相应的程序,再启动即mysqld -stop,mysqld -start,但是,还是失败,细心的话可以发现stop语句已经失效了。
尝试四:打开任务管理器,找到数据库的服务,于是先停止之前的数据库服务,在重新启动数据库服务,最后还是真的成功了。
open_basedir restriction in effect
绑定域名后出现这种错误时
Warning: is_file(): open_basedir restriction in effect. File(*****) is not within the allowed path(s):
Warning: require(): open_basedir restriction in effect. File(/www/wwwroot/xxxxx/index.php) is not within the allowed path(s): (/www/wwwroot/xxxxx/xxxxx/:/tmp/:/proc/) in /www/wwwroot/xxxxx/xxxxx/index.php on line 11 Warning: require(/www/wwwroot/xxxxx/index.php): failed to open stream: Operation not permitted in /www/wwwroot/xxxxx/xxxxx/index.php on line 11 Fatal error: require(): Failed opening required '/www/wwwroot/xxxxx/index.php' (include_path='.:/www/server/php/73/lib/php') in /www/wwwroot/xxxxx/xxxxx/index.php on line 11
需要删除根目录的的user.ini文件
附件缩略图信息更新
使用dr_thumb函数生成的图片是静态图片,一旦生成后就固定了,不会有变更的现象
例如,当后台新设置了水印时,采用dr_thumb函数任然会调用之前的水印图片,因为它生成的图片是静态的
如果后台发生了参数变更的话,只能手动删除缓存目录文件,dr_thumb函数会检测到文件不存在的情况下,再次重新生成缩略图文件
缩略图目录默认为:uploadfile/thumb/
后台登录故障{"code":1,"msg":"ok","data":{"sync":[],"url":
后台登录时偶尔会遇到此类提示:
{"code":1,"msg":"ok","data":{"sync":[],"url":"admin.php?c=home&m=home"}}
可能是页面js还没有加载完毕你就点登录了,才会导致这种提示
解决方案:
刷新页面重新登录
unable to set client connection character set : utfbmb4
unable to set client connection character set : utfbmb4
表示无法设置客户端连接字符集,utf8mb4格式字符集不支持
解决方案:
升级mysql版本,例如mysql5.7以上版本,推荐mysql8
此应用无法被识别
此应用无法被识别,表示你cms下载账号跟你应用插件下载账号不一致导致无法识别关联
解决方案:
1、使用下载插件的账号去下载cms程序
前往官方下载CMS升级包
https://www.xunruicms.com/member.html?app=vip&c=home&m=index
2、将升级包中的dayrui/My目录覆盖到网站上即可
3、然后再返回到后台就可以识别了
in_array(): Argument #2 ($haystack) must be of type array, null given
PHP8环境下,遇到以下错误时:
in_array(): Argument #2 ($haystack) must be of type array, null given
需要手动将函数in_array改成dr_in_array
模块域名恢复方法
当在后台把域名错误的绑定到模块域名上时,会导致域名无法访问后台,恢复办法:
1、打开配置文件
/cache/config/domain_app.php
2、将域名删除,留空
3、登录后台,这样就可以登录后台了
4、在模块域名处设置删除本域名
5、保存并更新缓存生效。
默认模板适用于正式建站吗
默认模板不建议应用于正式的网站中,因为
1、默认模板侧重于学习套用cms的模板标签,内部存在大量的编码注释,不利于正式网站
2、默认模板以功能展示为主,html结构不利于seo优化和收录
3、默认模板被许多站点安装后,导致搜索引擎会把他们这些站普遍归类为demo站,这样就不会正常收录你的网站了。
因此,在实践的建站上,最好不使用cms自带的default用于正式环境,自己设计或者找人做一套属于你自己的网站界面才是上上之策。
迅睿CMS网站打不开
关于网站打不开时怎么办,从以下几个方面去找原因
1、服务器硬件等问题
咨询网站主机的服务商就是空间商或者域名商,让他们排查是否是硬件问题,当他们反馈硬件没有问题,他们会告诉你是程序问题。
2、宸逸CMS程序问题
运行宸逸侦探工具 test.php 查看网站的错误日志记录,交给技术员分析日志;
如果不会技术的人员需要把网站打不开时的截图界面和错误日志记录发给宸逸官方人员排查。
后台登录失败/系统故障/界面闪退
一、出现登录闪退的情况
闪退表示服务器没有存储把session存储成功导致闪退现象,从以下几个方面检查
1、查找是否非法编辑器修改过php文件导致查找bom字符
https://www.xunruicms.com/doc/395.html
使用这个工具运行扫描一下
2、检查cache/session目录是否具备可写入权限
首先手动清空这个目录中的文件,然后再登陆一次看是否生成新的文件,如果不生成新的文件就表示不可写入,需要给777写入权限
3、检查服务器是否配置过session目录或者session存储方式
例如BT面板的站点设置:
php设置:
4、检查浏览器是否极速模式或兼容模式,在兼容模式下,后台也会闪退,且前台登录显示图片验证码错误!!
5、PHP低于7.3会出现这个情况,最低支持PHP72版本需要手动下载兼容包:
https://www.xunruicms.com/doc/1166.html
二、登录提示系统故障
1、首先要检查当天的错误日志记录,具体看错误日志对症下药
https://www.xunruicms.com/doc/658.html
如果没有生成错误日志,就往下看
2、当输入错误的密码时会提示密码错误,只有当登录正确的密码才会提升系统错误时:
这种情况最大可能是开启了云加速或者某某安全防护软件(例如堡塔PHP安全防),尝试关闭这些软件试一试。
3、各种云加速也会导致无法正常登录,关闭云加速试试。
4、可能是你开了memcached后,memcached未生效导致无法登录,尝试关闭memcached试一试。
error parsing headers: duplicate header 'Content-Type'
虚拟主机报500错误;
[Thu Jul 22 08:29:40 2021] [error] [client x.x.x.x] FastCGI: comm with server "/php-1.1/phpfarm-0.1.0/inst/bin/php-fpm-host5259993" aborted: error parsing headers: duplicate header 'Content-Type', referer: http://www.xxxxx.com/admin.php
FastCGI模式下不允许发送header,打开index.php文件,去掉header语句
第9行代码去掉
生成静态时报错排查处理
在生成静态的时候出错,最大可能性是模板的问题
排查方法
1、打开index.php开启开发者模式开关
https://www.xunruicms.com/doc/204.html
2、后台开启url自由模式
3、然后通过动态地址手动访问这个页面,就可以看到具体的错误,对症下药
首页:/index.php 共享栏目地址:/index.php?c=category&id=栏目id 模块内容地址:/index.php?c=show&id=内容id
自动生成index.html
index.html是网站首页
如何设置自动生成index.html
去配置中开启
开启就可以自动生成,当后台更新缓存时,或定时任务执行时,都会自动删除index.html文件,当有人访问时则会自动生成index.html
-------------------
如果希望index.html一直存在不想她自动删除的话,就把图上的开关关闭即可,手动去生成首页,这样就固定不变了。
移动端开启目录模式时URL出现无限个子目录
www.xxx.com/mobile/mobile/
形如这种无限个目录出现在地址上,说明问题出在伪静态上面,解决方法:
1、进入伪静态设置界面
2、需要按上图的提示(仅共你参考代码),对子目录进行伪静态设置,并需要在下方测试通过才行
当前提交的URL是xxx模式,请使用xxx模式访问再提交
这种提示表示你当前提交的URL前缀跟访问的url前缀不一致导致的,你可以右击网站查看源文件,你可以看出源文件的url跟你你浏览器的url前缀不一致了。
比如你后台开启了网站https模式,你却用http在访问网站 ------------------- 比如你后台没开启https模式,你却用https在访问网站
解决问题的关键因素在于:
1、https的模式,当你后台开启了https模式那么访问地址就一定要采用https开贴去访问;
2、当你后台没开启https模式,那么就一定要使用http开头的url访问网站,不要去用https访问网站了
宝塔导致后台无法登录提示系统故障
宝塔环境,后台无法登录提示系统故障
域名日志内容如下:
2021/11/03 10:18:08 [error] 6936#0: *2273380 failed to run body_filter_by_lua*: /wwwrver/speed/speed.lua:633: bad argument #1 to 'find' (string expected, got table) while sending to client, client: 117.81.25.210, server: www.rakindaaidc.cn, request: "POST /admin.php?c=login&go= HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-cgi-74.sock:", host: "www.xxxxx.cn", referrer: "http://www.xxxxxxxxxxxx.cn/admin.php?c=login"
找到对应的文件:
http://wwwrver/speed/speed.lua:633行
改成
重启宝塔面板即可恢复登录。
此问题已经反馈给了宝塔官方:https://www.bt.cn/bbs/thread-78804-1-1.html
字段名称修改方法
字段名称一旦创建好,在cms后台是无法变更的,因为变更动作会对已有数据有影响,推荐开发者使用phpmyadmin工具来操作:
操作之前需要备份好数据库。
1、在phpmyadmin中找到这个字段的实际表,例如help主表是:dr_1_help
点击右边修改城新的即可
2、切换到cms后台的自定义字段中,找到这个字段的id号
记住这个25号id
3、到phpmyadmin中找到 表 dr_field,找到25号记录
这个位置的名字必须与(2)保持一致,小写字母,不能是数字开头。
4、前往后台更新缓存即可生效。
网站被入侵了的处理方法
网站被黑、被挂目马的处理方法:
1、备份全站文件和数据库文件,打包下载备份到本地去
2、然后全站扫描,找到被注入木马的文件,然后清理掉
3、检查xunruicms的版本,务必升级到最新版本(低版本会存在安全威胁)
4、修改服务器相关的密码和cms后台密码(密码不能弱口令,防止被猜疑)
5、修改后台入口文件,不能是admin.php这些常用的入口
-----------安全防范部分-----------
基于宸逸cms的安全设置方案:
https://www.xunruicms.com/faq/772.html
那么,网站被攻击怎么办?宸逸团队提供两种解决方案。
方案一、针对有技术有开发经验的人群。
已经被攻击的网站,会存在文件被篡改现象,管理者需要清理掉被串改的文件,然后升级宸逸最新版本的程序,再安装《系统安全加固》插件进行全网站安全规划。
方案二、让宸逸团队帮你处理木马等问题,进行全方位的安全设置,联系方式:https://www.xunruicms.com/qq/js.html
内容删除后让id进行重置归一
共享模块为例,只需要清空表 dr_1_share_index,表示清空操作,需要提前备份数据以免数据不可恢复。
独立模块,只需要清空表: dr_1_模块目录_index
其他表也可以使用这种【清空表】的操作方式。
-----------------让id号从指定值开始---------------------
例如让id号从1000开始自增:
AUTO_INCREMENT选项就是id的自增基数。
提交内容时报502/503/403错误
502:请求量太多被拦截
503状态通常是服务器方发出的拦截信息。
产生原因:
由于提交内容中存在特殊字符、特殊文字、敏感词等等的内容,提交后被服务器安全软件拦截并发出的错误状态。
解决方案:
1、排查服务器是否安装过安全软件或防火墙,尝试关闭后提交试一试。
2、检查域名cdn是否有拦截机制。
数据库提示 index column size too large
MySQL数据库index column size too large. the maximum column size is 767 bytes问题解决方法:
最快捷的方法是切换数据库版本,MySQL57 MySQL8+分别切换试一试,如果不想切换数据库版本就往下看(也可以百度搜索设置方法)
在恢复一个mysql库的备份文件时遇到报错,报错信息为index column size too large. the maximum column size is 767 bytes,此问题为备份的库索引过长超过限制,目标数据库引擎为INNODB 引擎,编码UTF-8,主键字符串默认最大767,理论上是需要优化备份数据库的,但是在实际环境中如果没办法优化,我们可以通过配置目标数据库来解决这个报错
mysql在执行脚本时,报出了以下错误:
index column size too large. the maximum column size is 767 bytes
原因:
INNODB 引擎,UTF-8,主键字符串 默认最大 767,需要修改
解决方案:
1. 对数据库进行设置
set global innodb_file_format = BARRACUDA
set global innodb_large_prefix = ON
注意: 在navicat中执行成功,不清楚重启数据库是否还有效
查看是否生效
show variables like 'character%';
show variables like 'collation_%';
show variables like 'innodb_large_prefix';
show variables like 'innodb_file_format';
============================================
修改数据库的配置文件(vim /etc/my.cnf),加入如下两行配置
重启数据库并登录数据库检查配置是否生效
如何排查js错误
怎么排查js错误,需要在浏览器控制台查看
1、打开cms主目录的index.php文件,然后把开发模式打开
// 是否是开发者模式,设立改成1 define('IS_DEV', 1);
2、打开浏览器的【开发者工具】,例如edge浏览器
各个浏览器打开方法不一样,可以自己百度搜索打开方式
3、然后看到下方界面
4、清空控制台后,然后不关闭,在右侧的网页中,操作你出现故障的动作
5、这时候如果发生js故障时,下面会提示红字了。
6、上面的红字就是js错误,这个错误可以找前端的人给你解决~
缩略图/单文件/多文件开启远程下载功能
系统有单文件、多文件等字段,比如缩略图字段就是单文件字段,默认只能从电脑中上传图片,如下图所示:
如果想采集别的网站的图片,就要先下载图片到电脑中再上传比较麻烦。
功能说明
其实系统是有远程文件的功能的,如下图所示,增加一个“地址”按钮
点击就可以填写远程图片地址,还可以远程下载到本站服务器就比较方便了。
开启方法
以模块内容字段为例,表单字段等方法一致
1、进入模块的字段管理,如下图所示
2、找到缩略图字段或者其它要开启远程功能的文件字段,点击右边的 修改按钮,如下图所示:
3、开启“手动输入”保存即可,如下图所示:
如何开启 “微信支付”
网站安装好后,找不到微信支付在哪,本教程详细介绍下微信支付的使用方法。
必备条件
1、安装“支付系统”插件:https://www.xunruicms.com/shop/777.html
2、安装“微信”插件:https://www.xunruicms.com/shop/226.html
绑定公众号
开启微信支付
开启保存后,支付时就能看到微信支付了。
这个微信支付同时支持PC端与手机版微信中支付。
常见问题
1、支付错误:当前页面的URL未注册:https://www.xxxxx.com/index.php
解决办法:微信支付商户平台-》开发配置-》支付授权目录-》添加你的域名即可。
开启微信支付
系统支持微信支付功能。
一、必备条件
1、安装“支付系统”插件:https://www.xunruicms.com/shop/777.html
2、安装“微信系统”插件:https://www.xunruicms.com/shop/226.html
二、配置好公众号
三、配置微信支付
支付接口界面开启并配置好支付信息,前端支付时就可以看到微信支付功能了。
同时支持PC电脑端扫码支付,以及手机微信中唤起微信支付。
四、常见问题
1、支付提示错误:当前页面的URL未注册的提示
解决办法:微信支付商户平台-开发配置-支付授权目录,添加域名即可。
MySQL分页时使用 limit order by 会出现数据重复问题
情况描述:
当使用order排序时,在分页条件下,上页出现了某某数据id=123,下页或其他页又会出现id=123的内容,导致重复数据显示。
分析问题:
在MySQL 5.6的版本上,优化器在遇到order by limit语句的时候,做了一个优化,即 使用了priority queue。
使用 priority queue 的目的,就是在不能使用索引有序性的时候,如果要排序,并且使用了limit n,那么只需要在排序的过程中,保留n条记录即可,这样虽然不能解决所有记录都需要排序的开销,但是只需要 sort buffer 少量的内存就可以完成排序。
之所以MySQL 5.6出现了第二页数据重复的问题,是因为 priority queue 使用了堆排序的排序方法,而堆排序是一个不稳定的排序方法,也就是相同的值可能排序出来的结果和读出来的数据顺序不一致。
解决方案:
方案1:在字段添加上索引,就直接按照索引的有序性进行读取并分页。
方案2:order参数分配给不唯一的字段,例如id,时间等字段。
方案3:将mysql版本降级到5.5,MySQL 5.5 没有这个优化,所以也就不会出现这个问题。
防止垃圾信息提交/预防灌水
网站只要你开启了提交功能都会出现垃圾消息的几率,例如前台发布内容、前台留言等等这些数据提交的功能。
如何防范呢,总结几点
1、开启图片验证码,比如表单图片验证码,内容发布时图片验证码
这种效率不是很高,专业点的机器人也会破解。
2、利用手机短信验证码,留言时加一个手机验证码功能,这样可能少很多机器人了。
这个方式需要自己按手册二次开发一下,需要php基础
https://www.xunruicms.com/doc/793.html
3、开发第三方验证机制,例如滑动图片验证等等
例如一个很不错的第三方插件推荐:https://www.xunruicms.com/shop/958.html
4、实在不行就关闭留言功能了,这是下下策。
上传请求错误
表示上传文件被服务器拦截,或者服务器限制了上传
排查方法:
1、开启宸逸的开发者模式(手册搜索:开发者模式)
2、打开浏览器的F12控制台
3、在控制台里面,并选择网络选项
4、点开上传页面,上传提示错误后观察
如上图,右边就会显示详情,对症解决
MySQL数据库报错:Got error * from storage engine
Got error * from storage engine 数据库引擎不匹配
可能原因
1.检查mysql用户是否有数据目录的读写权限
2.修改数据库引擎
1)修改mysql配置文件.
vim /etc/mysql/my.cnf
default-storage-engine=innodb #我的数据库存储引擎是innodb 我现在配置默认创建都为innodb
innodb_force_recovery=0 #默认是没有这个参数,没有的话,他的默认值是0,这个参数的值如果大于0,innodb会被禁止使用insert、update、delete命令
max_allowed_packet=1024M #这个值要大于你导入的文件大小.
2)重启mysql服务
systemctl restart mysql
3.数据库空间不足(我遇到的)
1) df -h 查看磁盘空间
2)查看mysql目录下的log文件(./mysql/logs)是否过大
3) 通过连接MySQL查看
show variables like '%log';
查看general_log状态,如果为ON需要先将其设置为OFF(关闭日志记录模式)后再进行日志清理
set global general_log = OFF
清理:
echo "" > mysql.log #根据日志实际名称调整命令
清理完成后记得开启日志记录模式!
set global general_log = OFF
总结
如果之前一直正常运行,突然报错,可以先排除是否是由磁盘空间不足引起的该error,如果确实空间不足可进行第三步修复,否则在进行第一种第二种情况排查
实在搞不懂,咨询服务商技术员
从详细内容中自动提取简介字段(description)时保留空格
添加内容时,如果描述字段(description)没有填写的话,会从 内容(content)字段中自动提取一段文字,提取的时候会过滤掉空格与换行。
但如果是做英文站,空格被过滤后就无法阅读了。
解决办法
只需修改 简介字段(description),删除过滤函数即可,如下图所示:
没有给当前站点分配管理菜单权限
需要在后台,多站点管理,找到这个域名站点,右侧权限分配,进行勾选
设置完成后,更新缓存生效。
PHP常用正则表达式
必须存在大小写字母、数字、特殊符号
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*\(\)\_\+]).+$/
必须存在大小字母、数字
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).+$/
后台字段内容储存不完整/储存失败
在保存内容的时候,出现内容保存不完整,少了一部分内容没有储存进去、字段内容直接储存失败等这些情况。
排查方案:
1、观察php.ini设置参数:post_max_size
表单提交最大数值,此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的
默认为8M,设置为自己需要的值,比如设置50M
2、观察这个字段类别是不是设置的过小,比如text类型,本身就储存不了过多的内容,尝试改大为:mediumtext 或者longtext
需要通过phpmyadmin里面去修改对应表的这个字段结构。
3、想一想是不是自己变更过字段类别,比如原来字段是文本类型你后来改成了编辑器类型、比如原来是单文件类型你后来改成了多文件类型等等,
当字段变更时会有这样的提示:
这个时候,你就需要手动去phpmyadmin工具里面改他的字段类别了,改成更长的类型才能储存更多的内容
比如:
varchar(255) 改成text 或者更长的mediumtext