文章目录
- 常见问题
- 在FastAdmin中如何开启调试模式?
- 为什么在调试模式下功能正常,但在生产环境下功能失效
- 为什么在外网访问后台速度非常慢
- 如何启用后台管理多级菜单功能
- 插件管理配置了错误的伪静态前台无法访问时如何操作
- 如何在生成CRUD时生成回收站功能
- 如何在控制器或模型中获取当前登录的管理员或登录用户信息
- 安装后提示控制器不存在:E或控制器不存在:N
- FastAdmin的数据库SQL文件在哪里
- 如何修改后台默认皮肤
- 为什么前台自己创建的控制器提示你没有权限访问
- 为什么后台给管理员所在组分配了权限,管理员仍然提示没有权限访问
- php think install报不是内部或外部命令
- php think install报command not found
- 安装后只能访问网站首页,其它页均报404 page not found错误
- 安装后只能访问网站首页,其它页面均报no input file specified错误
- composer install时无法下载package
- 如何修改或禁用左侧菜单栏的角标
- 后台上传文件时提示HTTP Error.(code:-200)错误
- 在Windows下如何压缩打包JS和CSS
- 提示你所浏览的页面暂时无法访问
- 提示未知的数据格式或网络错误
- 如何将静态资源(/assets/目录下文件)采用CDN方式部署?
- 为何后台管理总是一登录或每隔几秒或几分钟就自动退出?
- 为何页面头部总是输出一个多余的●或?
- 后台管理默认首页如何修改?
- 安装应用插件时报无法打开zip文件、未知的数据格式(code:0)、插件下载失败、你所浏览的页面暂时无法访问等错误时如何排查?
- 表单提交保存数据时提示SQLSTATE\[22001\]: String data, right truncated: 1406 Data too long for column 'content' at row 1?
- 后台表格列表选择导出到Excel并打开后无法显示图片该如何操作?
- 前台提交的富文本内容被过滤,首行空格丢失该如何操作
- 后台插件管理安装插件时提示插件已经存在?
- 如何调整插件伪静态的优先级?
- 在后台系统配置中配置了cdn地址而导致后台管理无法登录时该如何还原?
- 打开页面报sql\_mode=only\_full\_group\_by错误时该怎么办?
- 为何后台常规管理系统配置中没有添加配置项的功能?
- 为何后台表格拖拽排序配置后仍然为灰色,无法进行拖拽排序?
- 为何多文件(多图片)预览时无法正常显示?
- 提示“不允许上传的文件类型”如何处理?
- 后台登录时验证码不显示?
- 管理员登录时提示请于1天后再尝试登录?
- 上传文件时提示未上传文件或超出服务器上传限制?
- 如何关闭前台会员中心?
- 如何开启前台会员中心手机注册验证码?
- 如何开启前台会员中心邮箱注册验证码?
- 为什么页面始终有响应Cache-Control: no-store, no-cache, must-revalidate?
- 后台添加或编辑时提示Forbidden错误提示?
- 为什么使用 join 后再使用排序操作出现 SQLSTATE 1267 Illegal mix of collations 问题?
- FastAdmin1.3.4和1.3.5版本中Bootstrap-Select组件异常如何处理?
- 配置使用了https协议但图片地址和上传地址是http协议?
- 服务器使用了负载均衡或CDN后造成获取客户端IP为内网IP以及生成URL链接不正确时该如何处理?
- 如何自定义404页面显示模板?
- 如何将插件管理配置的菜单添加到左侧菜单导航?
- 后台单独绑定域名后导致插件系统前台地址报错?
- 搜索引擎收录带有/index.php的页面时该如何处理?
- 微信PC端内打开网页或小程序报错?
- 为什么应用插件的菜单手动修改后再升级应用插件后菜单被还原了?
- 为什么图片启用防盗链后,后台图片无法加载?
- 修改插件配置或右上角清缓存提示failed to open stream: Permission denied该如何处理?
- 参考
- 完结
常见问题
如果你在使用FastAdmin开发框架的过程中遇到问题,请到问答社区提问: https://ask.fastadmin.net
在FastAdmin中如何开启调试模式?
开启调试模式的方法有两种:
- 打开
application/config.php
,找到app_debug
,将它的值置为true
即可 - 如果你有启用
.env
环境配置,修改其中app_debug
的值为true
即可。
为什么在调试模式下功能正常,但在生产环境下功能失效
如果你有修改了框架核心的JS文件或者修改了核心样式文件,需要使用命令重新压缩打包JS和CSS后才会在生产环境下生效,具体请参考:https://doc.fastadmin.net/doc/162.html
为什么在外网访问后台速度非常慢
如果你在外网开启了调试模式,因为在调试模式下加载的文件非常多,访问速度会非常慢,请在外网或生产环境下关闭调试模式。如果有更高的响应要求,建议采用CDN部署静态资源。部署方式请参考:#如何将静态资源采用CDN方式部署到第三方云存储
如何启用后台管理多级菜单功能
FastAdmin从1.0.0.20180513_beta
版本开始新增了多级菜单功能,开发者可以很方便的在配置文件中修改是否开启多级菜单功能,找到application/config.php
文件最下方有个multiplenav
配置,默认是false
,如果需要启用,请将multiplenav
置为true
即可。
如果启用了多级菜单后,菜单规则中的第一级将作为一级菜单显示在顶部。我们可以在权限管理
->菜单规则
中额外添加一级菜单,然后再重新规划我们的菜单。
温馨提示
FastAdmin从1.3.0
版本开始已经支持后台个性化布局,后台管理员登录后直接在后台管理右上角修改对应的布局后即可实时生效,无需修改配置文件。
插件管理配置了错误的伪静态前台无法访问时如何操作
如果在后台配置某一插件的伪静态错误时,导致前台完全无法打开时,你可以尝试使用http://www.yoursite.com/随机字符.php 进行登录后台,登录后再重新配置伪静态即可。
如果连后台登录也报错,可以尝试修改application/extra/addons.php
,移除键名为route
对应的值,修改为[]
,然后登录后台修改正确的伪静态,再清除缓存即可。
如何在生成CRUD时生成回收站功能
FastAdmin从1.0.0.20190301_beta
版本开始已经支持自动生成回收站功能,如果需要生成回收站功能,请确保你的FastAdmin版本,其次确保你的数据表中存在deletetime
这个字段,默认值必须为null,不能为0,只需保证存在此字段,CRUD在生成时会自动生成回收站相关的前后端代码和文件。
如何在控制器或模型中获取当前登录的管理员或登录用户信息
在FastAdmin所提供的基类Frontend
、Backend
、Api
中都有提供获取当前管理员或登录用户的信息方法
在后台管理的控制器中可以通过$this->auth->id
来获取管理员ID
,$this->auth->字段名
获取管理员的其它信息,如果需要在后台的Model
中获取当前登录的管理员ID
,可以通过两种方式获取:
\think\Session::get('admin');复制
$auth = \app\admin\library\Auth::instance();复制
在前台或API的控制器中可以通过$this->auth->id
来获取当前登录会员ID
,$this->auth->字段名
获取登录会员的其它信息,如果需要在前台的Model
中获取当前登录的用户信息,可以通过以下的方式获取:
//获取Auth对象
$auth = \app\common\library\Auth::instance();
//获取会员模型
$user = $auth->getUser();复制
安装后提示控制器不存在:E或控制器不存在:N
出现这种情况一般是由于Web服务器的PATH_INFO
未配置正确,导致服务器接收到了错误的PATH_INFO
值,请检查你的PATH_INFO
并修复后再重试
FastAdmin的数据库SQL文件在哪里
FastAdmin在安装时会自动创建数据库和数据表,免除了你手动创建数据库和导入数据库的烦恼。
FastAdmin的数据库安装文件保存在 application/admin/command/Install/fastadmin.sql
如何修改后台默认皮肤
为了进一步提升加载速度,后台默认启用了绿色主题的皮肤,如何修改其它皮肤呢?
从1.3.0
版本开始,已经支持在后台配置自定义皮肤(仅对当前浏览器生效),无需要修改配置文件。
从1.2.0
版本开始,已经支持通过配置文件修改后台默认皮肤,可以直接修改application/config.php
中的adminskin
值来实现快速换肤功能,adminskin
支持的值有
skin-blue/skin-black/skin-purple/skin-green/skin-red/skin-yellow
skin-blue-light/skin-black-light/skin-purple-light/skin-green-light/skin-red-light/skin-yellow-light
skin-black-blue/skin-black-purple/skin-black-green/skin-black-red/skin-black-yellow复制
为什么前台自己创建的控制器提示你没有权限访问
这是由于控制器的基类你肯定继承的是Frontend
,Frontend
基类有鉴权判断,有以下两种办法可以尝试
- 添加控制器的属性
$noNeedRight=["*"]
,表示无需再做鉴权 - 后台会员规则中添加相应的规则,再给对应的会员组赋予相应的权限即可
为什么后台给管理员所在组分配了权限,管理员仍然提示没有权限访问
如果是你自己添加的控制器,可以使用一键生成菜单命令(php think menu -c 控制器名
)来生成菜单,如果你是手动添加的规则菜单,权限规则必须细化到控制器的方法才可以。
php think install报不是内部或外部命令
这是由于php.exe
文件所在目录未加入到PATH环境变量
导致的
找到php.exe
文件所在的目录,将该目录加入到系统PATH环境变量
中后,重启CMD即可解决
如果你找不到php.exe
,可以参考FastAdmin开发环境配置系列教程
php think install报command not found
这是由于在Linux环境下未找到php的脚本程序
有两种解决办法,首先尝试使用which php
找到php所在的位置。
- 找到php脚本程序所在的目录,加入到PATH环境变量中去,使用
export PATH=$PATH:php脚本程序所在目录
- 找到php脚本程序文件,使用
ln -s php脚本程序文件 /usr/bin/php
安装后只能访问网站首页,其它页均报404 page not found错误
这是由于你的服务器伪静态没有生效或错误导致的。
如果你使用宝塔面板
,请直接在宝塔面板后台
->网站
->伪静态
中选择ThinkPHP5
的伪静态规则即可。
如果你使用的是 lnmp.org
的一键安装LNMP
环境,请查阅 https://lnmp.org/faq/lnmp-vhost-add-howto.html#rewrite 的伪静态配置。
如果你使用的是phpStudy
,建议参考视频安装教程中的伪静态配置:https://www.fastadmin.net/video/install.html
如果你是自行安装的Nginx
,建议将虚拟主机的root
绑定运行目录至public
目录
例如:
server {
listen 80;
server_name www.fa.com *.fa.com;
root "C:/phpstudy/WWW/fastadmin/public";
location / {
index index.html index.htm index.php;
#主要是这一段一定要确保存在
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
#结束
#autoindex on;
}
location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}复制
安装后只能访问网站首页,其它页面均报no input file specified错误
这是由于你的服务器伪静态没有生效或错误导致的,如果你使用宝塔面板,请直接在宝塔面板后台
->网站
->伪静态
中选择ThinkPHP5
的伪静态规则即可。
这种情况一般在Apache
下伪静态不工作的情况下出现,
首先确保已经启用Apache
的伪静态,确保目录已经配置好权限,如下面的Directory
配置
<VirtualHost *:80>
DocumentRoot "/Project/fastadmin/public"
ServerName fa.com
ServerAlias fa.com *.fa.com
<Directory "/Project/fastadmin">
AllowOverride All
Options Indexes FollowSymLinks
Require all granted
</Directory>
</VirtualHost>复制
其次伪静态规则在Apache fastcgi
模式下会导致No input file specified.
,未指定输入文件。
请修改public
目录下的.htaccess
文件
默认的
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]复制
修改成
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]复制
composer install时无法下载package
这是由于composer
默认配置是境外的源,如遇网络故障则会导致无法下载
推荐使用国内的镜像源,有以下两种启用方法
// 打开命令行窗口并执行如下命令:
composer config -g repos.packagist composer https://mirrors.tencent.com/composer/复制
// 打开命令行窗口,进入你的项目的根目录(也就是 composer.json 文件所在目录),执行如下命令:
composer config repos.packagist composer https://mirrors.tencent.com/composer/复制
如何修改或禁用左侧菜单栏的角标
FastAdmin后台左侧菜单栏有彩色的小角标,这一般用于通知和提醒操作,在后台开发时是非常方便的一个小功能,如何修改和禁用它呢?
找到/application/admin/controller/Index.php
中的index方法,其中有一段
$menulist = $this->auth->getSidebar([
'dashboard' => 'hot',
'auth' => ['new', 'red', 'badge'],
'auth/admin' => 12,
'auth/rule' => 4,
'general' => ['18', 'purple'],
]);复制
数组的键名是对应的左侧菜单栏的相对链接
数组的键值是需要显示的文字或数字,可以传字符串或数组
说明
- 如果是字符串,则角标的颜色是按照
'red', 'green', 'yellow', 'blue', 'teal', 'orange', 'purple'
的方式进行循环的。 - 如果是数组,这三个值分别表示:[显示的文字, 颜色,展现方式(
badge
或label
)]
如果需要删除这个小角标,则可以直接到数组置为空即可
在JS端同样可以进行相应的操作,在JS中对应需要刷新角标的地方使用以下方法即可添加或删除
top.window.Backend.api.sidebar({
'auth/admin':44
});复制
top.window.Backend.api.sidebar({
'auth/admin':0
});复制
后台上传文件时提示HTTP Error.(code:-200)错误
首先可以尝试下清空浏览器缓存后再刷新重试
其次可以使用谷歌浏览器的开发者工具,按F12,切换到Network
,看具体的上传文件时的错误信息。
在Windows下如何压缩打包JS和CSS
在FastAdmin中压缩打包JS和CSS文件需要NodeJS的支持
在Windows下需要手动配置Node的可执行文件,请修改application/admin/command/Min.php
中$nodeExec
的值
如你的Node可执行文件是C:/Program Files/nodejs/node.exe
,则请配置$nodeExec = '"C:/Program Files/nodejs/node.exe"'
;
提示你所浏览的页面暂时无法访问
如果我们在FastAdmin开发过程中遇到此错误,说明我们application/config.php
中的app_debug
是关闭的,必须开启app_debug
为true
才可以显示出详细的错误信息。如果开启app_debug
仍然显示不出详细错误,请确保php.ini
中的display_error
为开启状态。
提示未知的数据格式或网络错误
很多时候都有可能遇到提示未知的数据格式
或网络错误
这个提示,产生这个错误的原因一般来说都是服务端报错,导致返回的数据不是JSON格式或直接未返回,如下图
准备工作:首先确保你的FastAdmin开启了调试模式application/config.php
中的app_debug
置为true
两种定位错误的方法:
- 使用Chrome浏览器,打开开发者工具,选中
Network(网络)
选项卡,刷新一下页面或重新请求一次,定位到我们请求的URL,点击然后在Preview
即可看到错误信息 - 直接查看
runtime/log
目录下的错误日志
修复错误后再重试即可
FastAdmin建议运行在PHP7.2
及以上版本,因此如果提示网络错误请检查你的PHP是否低于该版本
如何将静态资源(/assets/目录下文件)采用CDN方式部署?
温馨提示
如果你只需要将上传的文件上传至又拍云、七牛云或阿里OSS,请在插件管理
中下载对应第三方云存储的插件并配置好即可,无需下方的步骤。
FastAdmin可以将框架静态的资源部署到云存储或CDN,可大大的加快网站的访问,默认FastAdmin框架的静态资源是不采用CDN部署的,如果需要启用,需要修改以下两个文件的配置
- 修改
application/extra/site.php
中cdnurl
的值为你CDN的地址 - 修改
application/config.php
中__CDN__
的值为你CDN的地址
然后请将你的静态资源public/assets
文件夹同步至你的CDN。
如果采用了静态资源CDN部署,在后台插件管理
中对插件执行安装、禁用、启用、卸载后都需要将public/assets/addons/
目录和public/assets/js/addons.js
文件刷新缓存或同步更新到CDN。
为何后台管理总是一登录或每隔几秒或几分钟就自动退出?
为了后台安全,新版本默认开启了后台IP变动检测,如果你需要关闭此功能,可以修改application/config.php
,将loginip_check
置为false
即可。
温馨提示
如果你使用了CDN、分布式部署或负载均衡,也有可能导致获取IP地址不正确,从而导致一登录就自动退出,请参考https://doc.fastadmin.net/doc/faq.html#toc-50
为何页面头部总是输出一个多余的●或?
一般出现这种情况都是由于你使用了Windows
自带编辑器编辑了某个配置文件或模板,导致文件本身的编码变成了utf8-bom
格式,这时你需要排查你的项目的所有文件。如果你使用PHPStorm
进行开发,可以在项目目录根路径上点击右键,点击Remove BOM
来移除bom
头,将文件编码变为utf8
(新版本PHPStorm请选中文件夹后,点击菜单中的文件->文件属性->移除BOM
进行移除)。
后台管理默认首页如何修改?
后台管理后台默认是控制台
首页,如需修改,请在后台->常规管理
->系统配置
中,将后台固定页
修改为你的控制器方法的链接即可,这里注意使用相对链接即可。
安装应用插件时报无法打开zip文件、未知的数据格式(code:0)、插件下载失败、你所浏览的页面暂时无法访问等错误时如何排查?
- 首先在后台->
插件管理
->会员信息
是否登录已购买应用插件的账号。 - 其次检查服务器,在线安装和离线安装均只支持中国内地服务器安装,其它地区无法进行在线安装或离线安装。
- 检查下PHP版本,目前最新版本只支持
7.4
(FastAdmin 1.3.4+),请检查你使用的PHP版本。 - 请检查你服务器的网络能否正常请求外网(公网),无法请求公网环境是无法安装应用插件。
- 如果有开启了宝塔的防火墙请先尝试关闭后安装,建议本地安装后再迁移到生产服务器。
- 检查站点下目录
runtime
是否有读写权限。 - 如果排除服务器问题,请开启调试后重试看具体错误原因,开启调试的方法:https://ask.fastadmin.net/question/985.html
- 请确定是否以超级管理员的身份登录的后台。
表单提交保存数据时提示SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column ‘content’ at row 1?
这是由于系统在检测到POST提交时会记录提交的参数信息,如果提交的POST数据过大,会导致日志表的content
字段溢出,此时我们需要修改fa_admin_log
表的content
字段,将字段类型修改为longtext
类型即可。
后台表格列表选择导出到Excel并打开后无法显示图片该如何操作?
这是由于上传配置中的cdnurl
为空,导致导出的图片没有截图域名前缀,需要手动修改application/extra/upload.php
中的cdnurl
值,将cdnurl
的值修改为你的站点地址即可,例如:https://www.example.com
,注意不能以/
结尾。
前台提交的富文本内容被过滤,首行空格丢失该如何操作
有些时候我们在前台提交的富文本内容被过滤了,比如富文本首行的缩进丢失,这是由于FastAdmin前台是有开启全局过滤,你可以自行修改application/common/controller/Frontend.php
移除trim
过滤限制,特别注意strip_tags,htmlspecialchars
不建议移除,移除后会导致跨站安全问题。
后台插件管理安装插件时提示插件已经存在?
这种情况常出现在安装后又卸载插件,而卸载插件时由于插件目录中有文件被打开或被其它软件占用,导致卸载插件时目录无法清除干净,此时再次安装插件时就会出现该情况,请尝试做好备份,手动清除addons/插件标识
文件夹后重试,插件标识可以从插件URL中查询到,如知识付费问答社区:https://www.fastadmin.net/store/ask.html 它的插件标识则是ask
。
如何调整插件伪静态的优先级?
在FastAdmin中插件中配置的伪静态优先级默认是按照字母来排序的,如果我们需要修改插件伪静态的优先级,可以手动配置application/extra/addons.php
,修改其中的priority
,添加应用插件标识,放在前面则优先匹配,如
'priority' => ["third", "cms", "ask"],复制
这里表示优先配置third
,然后才是cms
和ask
。
最后在后台插件管理右上角清除插件缓存即可。
在后台系统配置中配置了cdn地址而导致后台管理无法登录时该如何还原?
后台常规管理
->系统配置
的cdn地址
仅限用于静态资源采用CDN部署时才需要配置,如果静态资源未部署CDN,而此时在后台系统配置中配置了cdn地址
会导致后台样式丢失,且后台无法登录,此时我们需要手动修改application/extra/site.php
中的cdnurl
,将它的值修改为空即可。
温馨提示
FastAdmin 从1.3.x版本开始已经在后台移除该配置。
打开页面报sql_mode=only_full_group_by错误时该怎么办?
这是由于你的Mysql配置中设置了only_full_group_by
导致的错误,需要你修改你的Mysql
配置,首先需要找到你的Mysql的my.cnf
,找到其中的mysqld
,修改sql_mode
,移除ONLY_FULL_GROUP_BY
,如
[mysqld]
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"复制
然后重启Mysql服务即可。
为何后台常规管理系统配置中没有添加配置项的功能?
从1.3.0+版本开始,后台系统配置中添加配置项的功能只在开发环境才可使用,如需添加配置,需要开启调试模式后,再刷新页面即可。
为何后台表格拖拽排序配置后仍然为灰色,无法进行拖拽排序?
如果启用固定列,此时不支持拖拽排序,所以会为灰色,如需启用拖拽排序,只能禁用固定列,找到页面对应的JS,移除代码中的fixedColumns:true
即可。
为何多文件(多图片)预览时无法正常显示?
目前多文件(多图片)中的文件地址暂不支持存在,
,会导致图片错误,请参考:https://doc.fastadmin.net/doc/177.html#toc-5 温馨提示中的说明。
提示“不允许上传的文件类型”如何处理?
打开 application/extra/upload.php
,修改mimetype
,加入需要上传类型的文件后缀。
后台登录时验证码不显示?
首先请检查:application/config.php
是否设置login_captcha
,为true
时才会启用验证码功能。
其次请参考:https://ask.fastadmin.net/question/985.html 排查下图片是否有报错信息,如果状态码为500
或404
,请开启调试后查看具体错误原因。如果接口状态码为200
,说明图片接口正常,请检查下是否在Windows
下使用自带记事本编辑了代码文件(或修改配置文件),导致编辑的文件存在utf8 bom
头,请移除utf8 bom
头,使用utf8
编码后重试。
请检查PHP环境GD
库是否正确安装。
如果以上方法试了都不行,建议开启调试模式后调试下vendor/topthink/think-captcha/src/Captcha.php
中的entry
方法排查具体错误原因。
管理员登录时提示请于1天后再尝试登录?
这是由于FastAdmin
框架默认开启了登录失败重试次数限制,当失败次数超过10
次时,需要1天后才可以重新登录,你可以手动登录数据库修改数据库表fa_admin
中对应管理员的loginfailure
为0
,然后重试登录即可。
上传文件时提示未上传文件或超出服务器上传限制?
这种情况一般出现在本地上传时出现,通常情况下是由于上传的文件超出了服务器配置的限制,导致服务端无法正常获取到数据,请参考问题进行修改服务器配置:https://ask.fastadmin.net/question/27680.html
如何关闭前台会员中心?
打开 application/config.php
,找到底部fastadmin
配置,修改usercenter
值为false
即可。
如何开启前台会员中心手机注册验证码?
首先在插件市场安装一款短信插件并配置相关的参数,然后打开 application/config.php
,找到底部fastadmin
配置,修改user_register_captcha
值为mobile
即可。
如何开启前台会员中心邮箱注册验证码?
打开 application/config.php
,找到底部fastadmin
配置,修改user_register_captcha
值为email
即可。
为什么页面始终有响应Cache-Control: no-store, no-cache, must-revalidate?
这是由于你在页面中使用了session
,或视图模板中有调用{:token()}
输出token
(此时也会使用到session
),因使用了session
的页面,会自动添加响应头Cache-Control: no-store, no-cache, must-revalidate
。
后台添加或编辑时提示Forbidden错误提示?
首先请检查runtime/log
中的日志信息,检查是否有错误信息产生,如果有错误信息请根据错误信息进行处理,如果没有错误,请检查是否使用了宝塔面板,请检查是否宝塔面板中的防火墙进行了拦截。
为什么使用 join 后再使用排序操作出现 SQLSTATE 1267 Illegal mix of collations 问题?
这是因为数据表的字符集不一致导致的,请将数据表统一一下,比如都使用 utf8mb4_general_ci
FastAdmin1.3.4和1.3.5版本中Bootstrap-Select组件异常如何处理?
这是由于FastAdmin
框架中引入了新版本Bootstrap-Select
组件导致冲突,目前建议你做好备份后,下载https://cdn.fastadmin.net/uploads/2023/03/24/d9988d44627f5407ab4d3027b9b19b87.zip
解压后将其中的public
文件夹覆盖到站点目录进行合并,然后清浏览器缓存即可。
配置使用了https协议但图片地址和上传地址是http协议?
首先如果有安装使用云存储插件,请检查云存储插件中配置的CDN地址
和上传接口地址
是否使用了http
其次如果我们使用了CDN,也有可能导致该问题发生,此时建议你检查你使用的CDN的配置在回源时是否支持HTTP_X_FORWARDED_PROTO
,如果支持请检查该值是否为https
,如果不支持HTTP_X_FORWARDED_PROTO
,请检查你的CDN是否支持自定义回源参数,如果支持自定义回源参数,请自定义一个回源参数,然后修改application/config.php
,添加一项https_agent_name
配置,https_agent_name
的值为你自定义回源参数即可。
服务器使用了负载均衡或CDN后造成获取客户端IP为内网IP以及生成URL链接不正确时该如何处理?
如果服务器使用了负载均衡或CDN后造成获取客户端IP为内网IP
以及生成URL链接不正确
时可按以下方式修改配置。
问题1:获取客户端IP为内网IP
因为在ThinkPHP5框架中获取客户端IP是通过REMOTE_ADDR
参数来获取的,如果此时我们使用了负载均衡或CDN后会造成客户端IP为负载均衡或CDN服务器的IP地址,此时我们可以咨询我们使用的云服务商或参考云服务商提供的相关文档,获取负载均衡或CDN传递真实IP的参数名,然后修改application/config.php
中的http_agent_ip
值即可。
问题2:生成的URL链接不正确
因为ThinkPHP5框架中使用url
函数生成URL路径时,优先使用HTTPS/REQUEST_SCHEME/SERVER_PORT/HTTP_X_FORWARDED_PROTO
来判断是否是SSL
请求,从而生成URL地址。
如果服务器使用了负载均衡或CDN后,由于服务器无法获取到这几个参数判断,从而导致生成URL地址错误,主要表现在生成的URL地址本应该是https://
开头,但却生成了http://
开头。
解决办法分两种:
一种是需要修改application/config.php
,添加一个is_https
的参数,值设定为true
即可,这种解决方案会导致不管是否是SSL
请求,都会强制生成https://
开头的URL。
另一种就是添加转发参数,通常情况下负载均衡或CDN都会有转发或回源参数的配置,添加以下转发(回源)参数,让服务器识别到SSL
请求即可。
参数名 | 参数值 |
---|---|
HTTP_X_FORWARDED_PROTO | https |
如何自定义404页面显示模板?
在FastAdmin框架中如果使用了throw new \think\exception\HttpException(404, '页面不存在');
或abort(404,'页面不存在');
抛出了404
错误,默认情况下会提示你所浏览的页面暂时无法访问
,如果我们希望自定义404的错误页面,可以修改application/config.php
配置文件,找到http_exception_template
的配置文件,如果不存在,需要手动添加配置项,配置如下:
'http_exception_template' => [
// 定义404错误的重定向页面地址
404 => APP_PATH . 'common/view/tpl/404.tpl',
],复制
然后在对应的application/common/view/tpl/
目录下创建404.tpl
模板即可。
温馨提示
1、该配置仅在生产环境下生效,如果开启了调试模式仍然会提示详细的错误信息。
2、默认修改application/config.php
会对application
目录下的所有模块起作用,如index
、admin
、api
,如果希望仅对index
模块起作用,可以在application/index
目录下创建一个config.php
配置并做以上的配置。
如何将插件管理配置的菜单添加到左侧菜单导航?
默认情况下插件管理配置的菜单都是需要通过插件管理
->配置
进行管理,如果需要在左侧菜单中添加相应的快捷链接,可以通过权限管理
->菜单规则
->添加
,添加中规则
使用addon/config/name/插件标识
的菜单即可。
后台单独绑定域名后导致插件系统前台地址报错?
默认前后台使用同一个域名时前台插件系统不会报错,如果后台单独绑定了域名,导致插件前台URL地址拼接错误,此时框架无法得知你前台插件域名主站的域名,此时需要手动修改application/admin/config.php
,添加上如下配置:
'view_replace_str' => [
'__PUBLIC__' => 'https://www.example.com',
],复制
其中https://www.example.com
为你主站的站点地址。
搜索引擎收录带有/index.php的页面时该如何处理?
通常情况下我们请求的页面都是不带/index.php
,如果希望只保留不带/index.php
的页面,可以通过修改application/common/behavior/Common.php
中的moduleInit
方法,在该方法内开头处添加如下代码即可
if (stripos($request->url(), "/index.php") === 0) {
$url = str_replace("/index.php", "", $request->url());
$url = $url ?: "/";
header("HTTP/1.1 301 Moved Permanently");
header("Location: " . $url);
exit;
}复制
微信PC端内打开网页或小程序报错?
如果在微信PC端内打开调试模式后报Undefined offset: 1 in /www/wwwroot/www.example.com/application/common/view/tpl/think_exception.tpl
或Undefined offset: 1 in /www/wwwroot/www.example.com/thinkphp/library/think/Lang.php
,可参考以下方法进行修复:
application/common/view/tpl/think_exception.tpl
大概第22
行
$langSet = strtolower($matches[1]);复制
修改为
$langSet = strtolower($matches[1] ?? '');复制
thinkphp/library/think/Lang.php
大概第204
行
$langSet = strtolower($matches[1]);复制
修改为:
$langSet = strtolower($matches[1] ?? '');复制
使用旧版本FastAdmin的如果不需要多语言的可以关闭多语言application/config.php
修改为'lang_switch_on' => false
这是由于新版本微信电脑端HTTP_ACCEPT_LANGUAGE
获取为*
而导致该错误。
参考:
https://gitee.com/karson/fastadmin/blob/1.x/application/common/view/tpl/think_exception.tpl
为什么应用插件的菜单手动修改后再升级应用插件后菜单被还原了?
这是由于FastAdmin应用插件系统菜单升级功能导致,如果不希望菜单升级覆盖原有的菜单,可通过修改application/common/library/Menu.php
中的menuUpdate
方法,将大概第196
行的
$menu = $oldMenu[$data['name']];复制
修改为
$menu = $oldMenu[$data['name']];
unset($menu['title']);复制
即可。
需谨慎
温馨提示:这种修改将导致无法和最新版本应用插件的菜单标题同步。
为什么图片启用防盗链后,后台图片无法加载?
这是由于FastAdmin框架后台设定了referer
为never
,也就是不发送携带referer
参数,你可以自行修改application/admin/view/common/meta.html
,找到大概第5
行的
<meta name="referrer" content="never">复制
移除该行即可,但通常不建议移除,这样会导致我们的列表中的图片携带有referer
信息,如果一定要移除,建议配合浏览器安全策略插件:https://www.fastadmin.net/store/csp.html 来限制只加载指定域名下图片的加载。
修改插件配置或右上角清缓存提示failed to open stream: Permission denied该如何处理?
如果我们在插件管理修改配置
或右上角清缓存时
提示file_put_contents(/www/wwwroot/www.example.com/xxx/xxx.php): failed to open stream: Permission denied
,请检查对应的文件是否有写权限,修改配置或清缓存需要更新该文件,开发或配置阶段建议给对应文件添加相应的写权限,正式上线后建议移除写权限。
文档最后更新时间:2024-09-14 16:19:08
参考
https://doc.fastadmin.net/docs/faq.html
完结
赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注
,你的每一次支持
都是我不断创作的最大动力。当然如果你发现了文章中存在错误
或者有更好的解决方法
,也欢迎评论私信告诉我哦!
好了,我是向宇
,https://xiangyu.blog.csdn.net
一位在小公司默默奋斗的开发者,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!如果你遇到任何问题,也欢迎你评论私信或者加群找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~