报错1:
local.ERROR: Argument 3 passed to Lcobucci\JWT\Signer\Hmac::doVerify() must be an instance of Lcobucci\JWT\Signer\Key, null given, called in
报错2:
local.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: NO)
之前一直出现报错1,还认为是jwt的问题。网上查了很多,都没查到原因。甚至还借用同事的翻墙账号,用google查了,也没查到问题。
无非就是用命令:
php artisan key:generate
php artisan jwt:secret
php artisan route:clear
php artisan config:clear
php artisan cache:clear
php artisan config:cache
但每次在配置文件里填加了东西,会读取不到。都要cache:clear。所以,我就没用config:cache,觉得麻烦。
直到今天调试的时候,发现出现错误2在读数据库里的账号是用的forge默认账号,而不是.env的。才发现是因为偶尔获取不到.env的数据。
所以,网上一搜索,原来是少了这一步操作:在每次更改.env和config目录下的文件,需要执行命令:
php artisan config:cache
它会在bootstrap/cache目录下生成config.php。之后程序只会读取这个config.php,不会读取.env和config目录下的配置。
这样又出现了另一个问题,在常规代码里用env(),不起作用,获取不到.env的值。所以,如果在.env里定义了常量,需要在config目录下的配置里去定义。常规代码通过config()函数去获取。