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

发布时间 - 2019-02-11 00:00:00    点击率:

本篇文章给大家带来的内容是关于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文件中,环境变量的配置,最好都加上"",避免出现意外的灾难。



# laravel  # php  # 恢复正常  # 而在  # 对你  # 有一定  # 给大家  # 机器上  # 报错  # 中为  # 过程中  # 而用 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 个人摄影网站制作流程,摄影爱好者都去什么网站?  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  Linux系统命令中tree命令详解  如何在IIS中新建站点并解决端口绑定冲突?  详解Oracle修改字段类型方法总结  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  html5的keygen标签为什么废弃_替代方案说明【解答】  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  使用Dockerfile构建java web环境  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  如何在阿里云虚拟主机上快速搭建个人网站?  JavaScript如何实现路由_前端路由原理是什么  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  在centOS 7安装mysql 5.7的详细教程  Laravel如何配置任务调度?(Cron Job示例)  活动邀请函制作网站有哪些,活动邀请函文案?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  如何在局域网内绑定自建网站域名?  ,南京靠谱的征婚网站?  如何快速生成ASP一键建站模板并优化安全性?  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  创业网站制作流程,创业网站可靠吗?  Laravel Docker环境搭建教程_Laravel Sail使用指南  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  微信公众帐号开发教程之图文消息全攻略  如何选择可靠的免备案建站服务器?  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  如何在宝塔面板创建新站点?  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  手机网站制作与建设方案,手机网站如何建设?  JavaScript中的标签模板是什么_它如何扩展字符串功能  网站建设保证美观性,需要考虑的几点问题!  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  焦点电影公司作品,电影焦点结局是什么?  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  详解阿里云nginx服务器多站点的配置  Laravel如何实现模型的全局作用域?(Global Scope示例)  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  南京网站制作费用,南京远驱官方网站?