资讯专栏INFORMATION COLUMN

laravel项目一次发布导致的BUG(环境变量问题)

hqman / 2144人阅读

摘要:项目一次发布导致的背景项目的某一次发布后,项目中连接数据库突然报错,而用同样的数据库账号密码在机器上连接是可以的。建议文件中,环境变量的配置,最好都加上,避免出现意外的灾难。

laravel项目一次发布导致的BUG 背景

laravel项目的某一次发布后,项目中连接数据库突然报错,而用同样的数据库账号密码在机器上连接是可以的。

临时解决方案

经过短暂时间的排查,没找到原因,原数据库密码DB_PASSWORD=abcde#142!*,修改数据库密码为DB_PASSWORD=abcde2019后,恢复正常。

排查思路

变更密码后,数据库能正常连接,可见是密码问题,同时同样的密码在项目中访问数据库失败而在机器上可以访问成功,可判断是环境问题导致的密码问题。

在项目中打印数据库连接配置的日志,如下:

Array
(
    [driver] => mysql
    [host] => xxx
    [port] => xxx
    [database] => xxx
    [username] => xxx
    [password] => abcde
    [unix_socket] => 
    [charset] => utf8mb4
    [collation] => utf8mb4_unicode_ci
    [prefix] => 
    [strict] => 1
    [engine] => 
)

可见密码配置在env中为DB_PASSWORD=abcde#142!*,但是在PHP代码中读取的数据库密码配置为abcde,可见#后面的内容代码中认为是注释,从而忽略了。

继续查看jenkins发布日志,发现了有一段日志输出:

Package operations: 0 installs, 3 updates, 0 removals
  - Updating vlucas/phpdotenv (v2.5.2 => v2.6.0): Downloading (connecting...)Downloading (0%)           Downloading (15%)Downloading (100%)

发布过程中,有一个依赖包的升级。

查看vlucas/phpdotenv的文档,看到以下说明:

Comments

You can comment your .env file using the # character. E.g.

# this is a comment
VAR="value" # comment
VAR=value # comment
解决方案

.env文件中,对密码字段加上双引号,如DB_PASSWORD="abcde#142!*",然后一切恢复正常。

建议.env文件中,环境变量的配置,最好都加上"",避免出现意外的灾难。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30051.html

相关文章

  • 三年前旧代码重构、总结与反思

    摘要:最近在维护一个三年前的旧代码,用的是框架。单元测试和语言并发控制实际上是个蛋疼的问题,夸张一点说,当时的并不能特别轻松地实现并发,甚至不能实现并发。语言的功能之一就是自带单元测试。用语言之前,我的习惯是不写单元测试。 最近在维护一个三年前的旧代码,用的是laravel框架。 从某些方面来讲,这个代码算是比较标准为了实现在规定的时间内完成相关功能,同时程序员水平不高、经过大量优化之后,变...

    Shihira 评论0 收藏0
  • Composer 中文镜像 / Packagist 中国全量镜像正式发布

    摘要:中国全量镜像是由社区联合又拍云与优帆远扬共同合作推出的公益项目,旨在为广大用户提供稳定和高速的国内镜像服务。致谢中国全量镜像的由国内领先服务商又拍云提供,相信这次联合合作能给镜像提供稳定快速的支持。 showImg(https://dn-phphub.qbox.me/uploads/images/201704/21/1/dDANSZZbWZ.jpg); 『Composer 中国全量镜像...

    icyfire 评论0 收藏0
  • Laravel一次单元测试发现'BUG',分析并解决问题

    摘要:下面这段代码是自带的表单验证的语法,不太了解的可以先查看文档也可以使用替换和我们期望的结果是能校验字段最小值是,最大值是当我单元测试的时候发现,竟然校验通过了单元测试代码文档分析我们看一下文档验证中的字段必须具有最小值。 下面这段代码是Laravel自带的表单验证的语法,不太了解的可以先查看文档 group_num => min:1|max:21 // 也可以使用between替换m...

    zhiwei 评论0 收藏0
  • 基于 Laravel 模块化开发框架 Notadd RC1 fix1 发布

    摘要:目前默认使用了包,所以无需拓展。简单的消息队列队列为不同的后台队列服务提供统一的,例如,,,甚至其他基于关系型数据库的队列。队列的目的是将耗时的任务延时处理,比如发送邮件,从而大幅度缩短请求和相应的时间。 更新内容 修复长时间没访问后登录后台空白的BUG (@1459416736) 修复部分后台 server error 问题 (@1459416736) 增加 win 下 exten...

    Ryan_Li 评论0 收藏0
  • Rainbond 5.1.5发布,企业应用市场远程一键安装

    摘要:年月日,发布版本,本次版本更新带来了全新的应用市场交付体验,并对源码类服务的运行机制架构服务管理等方面做了大量优化。发布社区公开应用。我们正在进行的是将应用转化为应用存放于应用市场中供用户直接安装使用。 2019年7月8日,Rainbond发布5.1.5版本,本次版本更新带来了全新的应用市场交付Pipeline体验,并对源码类服务的运行机制、ServiceMesh架构、服务管理等方面做...

    Aomine 评论0 收藏0

发表评论

0条评论

hqman

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<