FastAdmin在macOS下的不兼容问题
macOS下安装配置完nginx+ php@7.4环境后,一般使用ThinkPHP的框架已可正常运行,但是FastAdmin运行时还是会有一些不兼容的问题。
1. 访问后台:模块不存在
比如后台入口文件为`admin123.php`,访问它会报`模块不存在admin123.php`。
Home of Little Jelly
macOS下安装配置完nginx+ php@7.4环境后,一般使用ThinkPHP的框架已可正常运行,但是FastAdmin运行时还是会有一些不兼容的问题。
1. 访问后台:模块不存在
比如后台入口文件为`admin123.php`,访问它会报`模块不存在admin123.php`。
鼓捣过Kubernetes,在公司做开发时使用Docker,外接硬盘,通过软链接的方式把程序文件、数据库映射到Docker里,在家里配置同样的Docker容器,这样硬盘直接插在家里电脑上就能用了,一直以来也没觉得有什么不对。
这次郑州疫情,被封在家里,暴露了一些问题:
最近一个ThinkPHP5做的项目硬盘满了,就给上传目录做了个软链接,即把`/public/uploads`使用`ln -s`命令指向了别的硬盘的目录`/data/uploads`,结果文件都上传失败,报500错误:
使用ThinkPHP5框架,包括基于ThinkPHP5框架开发的第三方框架操作数据库时,有时会提示`SQLSTATE[42S02]: Base table or view not found: 1146 Table ‘testdb.test_table’ doesn’t exist`。
即找不到表或视图。
首先检查下数据库中是否存在该表,一般情况下是因为表确实不存在。
ThinkPHP5的缓存和session默认使用文件存储。
即`application/config.php`中`cache`的`type`是`File`,而`session`的`type`是空。
可以改用Redis作为缓存和session的存储,效率更高。在分布式的环境中,使用Redis来存储,可以保证数据的一致性和会话的一致性。
Laravel支持多种认证方式,其中API认证的方式是最简单的,作为接口使用非常方便。注册/登录成功会返回一个`api_token`,通过这个`api_tpken`就可以执行需要登录的操作。
下面讲下具体的使用步骤。
### 数据表及迁移
Laravel安装及配置。
安装
通过`composer`方式安装
FastAdmin框架有单点登录的配置,然好像不起什么作用,所以自己实现了一个。
原理:记录用户ID、用户名与session_id的对应关系,发生改变时,即视为重新登录,此时重新绑定关系,老的关系失效,强制清空session.
PHP中使用ElasticSearch。
composer安装elasticsearch
composer require elasticsearch/elasticsearch
PHP要使用XdevAPI扩展连接MySQL8,首先要安装MySQL8,而且需要为PHP安装配置`mysql_xdevapi`扩展,见之前的教程[PHP8安装MySQL xdevapi扩展](https://www.pimspeak.com/php8-mysql-xdevapi-extension.html)。
装好之后就可以连接了。
示例代码