• 认真地记录技术中遇到的坑!
  • 能摸鱼真是太好啦!嘿嘿嘿!

PHP Laravel框架问题记录

PHP 悠悠 7年前 (2018-01-22) 3326次浏览 0个评论

该文章记录在使用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,只有执行以下命令清除配置缓存后才可以读取.

php artisan config:clear 

解决办法

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

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

// config 格式: 文件名.变量名
config('app.debug'); // 读取debug配置的值

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 的时候加入输出文件绝对路径。


转载请注明出处 PHP Laravel框架问题记录
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址