Skip to content

常见问题

为什么项目安装成功之后无法访问

  • 安装项目之后,打开 DEBUG,将 .envdebug 设置为 true.
  • 不要直接访问 PHP 项目,即使你在配置完域名之后.

为什么权限添加之后没有生效

CatchAdmin 在用户登录之后,会将登录用户的权限信息缓存起来。所以需要刷新一下后台重新拉取信息。

常见错误

Cloud not Create token :strpos() expect parameter 1 to be string. array give 请检查 .env 文件是否生成了 jwt 密钥。如果没有,请执行

php think jwt:create

TIP

如果还是不行,请检查是否有 .env 文件

There are no commands defined in the "jwt" namespace.

解决方案有两个,均由于 Composer 升级导致的。

  • 降低 composer 版本, composer self-update --rollback
  • 升级 tp 核心版本,composer update 即可

TIP

目前推荐第一种,防止有其他包没有做适配工作。激进点可以选择第二种,毕竟 composer2 太香了。

为什么找不到 CatchAdmin 的 SQL 文件

CatchAdmin 摒弃了 SQL 形式的安装,采用了 Migration 建立数据表,数据表在每个模块都是独立。 具体可以查看模块下的 database 文件下的 migration可以清晰看到每个模块的数据表的迭代情况

如何获取登录用户的信息

CatchAdmin 可以全局获取登录用户信息

php
request()->user()
// 获取用户角色
request()->user()->getRoles()

composer install 安装报错

如果遇到了 think service:discover handling the post-autoload-dump event returned with error code 255 错误

  • 如果存在 composer.lock, 删除 vendor 文件夹以及删除 composer.lock 文件,之后 composer install
  • 直接 composer update 即可

上线部署

优化自动加载的时候要去除 require-dev 的加载目录

composer dump-autoload --no-dev

出现权限问题

chmod(): Operation not permitted

需要改变运行用户, 找到 fpm 运行的用户组,然后使用下面命令,fpm 默认是 www-data, 如果修改了用户,根据实际情况修改即可。

chown -R www-data:www-data catch/

出现路由未定义

  • 检查 runtime\catch 目录下是否有缓存
  • 检查对应的模块是否开启, module.json 文件 enable 字段

定义日期类型错误

Incorrect date value: ‘0000-00-00 00:00:00‘ for column ‘xxxx‘ at row 1

查看 sql_mode变量

php
show variables like '%sql_mode%'

如果含有 NO_ZERO_IN_DATE, NO_ZERO_DATE, 则去除。

set @@sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

变量最好配置 mysql 的 my.cnf 中,否则重启会失效

模型注释无法生成

首先移除

composer remove jaguarjack/file-generate --ignore-platform-reqs

在重新安装

composer require jaguarjack/file-generate:dev-master --ignore-platform-reqs