本篇文章给大家带来的内容是关于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%)
发布过程中,有一个依赖包的升级。
商汤商量
商汤科技研发的AI对话工具,商量商量,都能解决。
36 查看详情
查看vlucas/phpdotenv的文档,看到以下说明:
Comments
You can comment your .env file using the # character. E.g.
# this is a commentVAR="value" # commentVAR=value # comment
解决方案
.env文件中,对密码字段加上双引号,如DB_PASSWORD=”abcde#142!*”,然后一切恢复正常。
建议.env文件中,环境变量的配置,最好都加上””,避免出现意外的灾难。
以上就是laravel项目之发布导致的BUG(环境变量问题)的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/214721.html
微信扫一扫
支付宝扫一扫