php laravel框架失败_PHP Laravel框架问题记录

该文章记录在使用PHP Laravel框架过程中遇到的一些问题。Laravel官方文档参考这里。

Laravel 使用 groupBy 报错

问题描述

使用 groupBy 进行多列分组,或者获取列和分组列不相同时会报错。

说明

Laravel5.4以后启用了 mysql 严格语法检查,导致这种 groupBy 会报错。

解决办法

修改时配置文件: config/database.php 将mysql配置的 strict 项修改为 false,关闭严格检查即可。

Laravel 使用 env 函数或者 $_ENV 读取环境变量为空

问题描述

在控制器或者前端模板页面等地方读取 _ENV 变量时,报 undefined 错误,此时输出_ENV 为null

说明

在Laravel项目中,如果执行了 php artisan config:cache 命令会把 app/config 目录下的所有配置文件“编译”整合成一个缓存配置文件到 bootstrap/cache/config.php,每个配置文件都可以通过 env 函数读取环境变量,这里是可以读取的。

但是一旦有了这个缓存配置文件,在其他地方使用 env 函数是读取不到环境变量的,所以返回 null,只有执行以下命令清除配置缓存后才可以读取.

解决办法

在配置文件即 app/config 目录下的其他地方,读取配置不要使用 env 函数或者 $_ENV 变量去读环境变量。

所有要用到的环境变量,在 app/config 目录的配置文件中通过 env 读取,其他地方使用 config 函数读取。示例:

Laravel encrypter 报错

问题描述

在Windows上偶尔抛出 RuntimeException 异常:The only supported ciphers are AES-128-CBC and AES-256-CBC with the correct key lengths.

说明

加密模块首先需要开启 PHP 的openssl扩展,这个异常抛出的概率很小,刷新之后有恢复正常了,其原因是在 config/app.php 文件中的 key 配置,默认是 env(‘APP_KEY’),需要从配置文件中读取,在Windows环境下,偶尔会出现文件句柄被占用或者内存原因读取不到配置,所以为空,导致 key 为空,所以报错。

解决办法

执行 php artisan config:cache 命令缓存配置,或者使用 ‘key’ => env(‘APP_KEY’, ‘xxxxx’),将默认值写入。或者直接配置 ‘key’ => ‘xxxxx’。

Laravel 任务调度没有生效

问题描述

在 Console/Kernel.php 的 schedule 中设置的定时任务不生效

说明

一种可能原因是使用了 sendOutputTo 方法将输出写入到某个文件,然而这个文件不存在导致。

解决办法

写入正确的文件绝对路径,需要注意测试环境和生成环境,或者在启动 schedule:run 的时候加入输出文件绝对路径。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值