• 技术文章 > php框架教程 > laravel

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

    不言 不言 2019-02-11 10:10:18 转载 177

    本篇文章给大家带来的内容是关于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项目之发布导致的BUG(环境变量问题)的详细内容,更多请关注php中文网其它相关文章!

    第五期线上培训班
    专题推荐: laravel php
    上一篇:Laravel Eloquent的技巧分享(示例讲解) 下一篇:laravel常用命令的总结大全

    相关文章推荐

    • Laravel 5 框架入门(四)完结篇_php实例 • Laravel 5 框架入门(三)_php实例 • Laravel 5 框架入门(二)构建 Pages 的管理功能_php实例 • ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼_php技巧

    全部评论我要评论

  • 取消 发布评论 发送
  • PHP中文网