更新了依赖 vlucas/phpdotenv 后项目无法启动

我在.env文件里面设置了一个值为0的变量,可是用env()取出来的时候它的值为空字符串""。调试发现是phpdotenv的问题。在vendor/vlucas/phpdotenv/Dotenv.php中有如下代码:

......
    protected static function sanitiseVariableValue($value)
    {
        $value = trim($value);
        if (!$value) {
            return '';
        }
        ......
     }
......

可以看出来,当$value为0是就返回空字符串

所以我就想更新一下phpdotenv的版本看看能不能解决这个问题。
可是我用Composer更新之后,访问页面出现了

Fatal error: Class 'Dotenv' not found in bootstrap\app.php on line 5

的错误提示。
请问这个问题要怎么解决?

JellyBool

你是怎么更新这个package的》在哪个目录下执行的update,其实这跟版本可能没什么关系,是你的值有点特殊,你可以设置为false,然后类型转换就可以了

Hsin

@JellyBool 我是在项目的根目录下的update。更新后/vendor/vlucas/phpdotenv/src下的类从一个Dotenv.php变成了三个类,是这个原因导致不能自动加载的吗?

JellyBool

你是在项目的根目录下的composer.json直接添加新版本?

Hsin

@JellyBool 我把根目录下的composer.json里面的"vlucas/phpdotenv": "~1.0"改成了"vlucas/phpdotenv": "~2.0",然后再根目录执行composer update

JellyBool

额,我的项目根目录composer.json里面并没有 "vlucas/phpdotenv": "~1.0",而在laravel框架的composer.json中有,还是没有了解你是怎么update的

Hsin

@JellyBool 额,不好意思。忘了说我用的是Lumen,Lumen的这个是在根目录里面的。

justtest

重启服务器,不行的话添加 composer.json 中顶级键名 minimum-stability, 值为 stable, 然后删掉 require 中的 dotenv 之后,重新 composer require xxxxx