讨论数量:
- 这不是 redis 配置没有读到吗?
- 为啥 .env 配置用的
common_redis_host
,但是 Redis 单例获取的时候,读取的redis['redisServer']['im']
?
- 请确认是否有
yiithings/yii2-dotenv
这个依赖且处于安装成功的状态,可以使用composer why yiithings/yii2-dotenv
来验证 - 请确认你项目的入口文件中是否存在如下代码,命令行入口文件是项目目录下的 yii 可执行文件,web 入口在 项目 web 目录下的 index.php,请按照自己的项目路径调整如下代码。
define('DOTENV_PATH', __DIR__ . '/'); define('DOTENV_FILE', '.env'); define('DOTENV_OVERLOAD', false);
在安装了yiithings/yii2-dotenv
包之后无法读取.env
文件,可能有几个原因导致这个问题:
确保
.env
文件存在:首先,请确保您的宝塔项目根目录下存在.env
文件,并且文件名没有拼写错误。可以使用命令行或文件管理器确认文件是否存在。检查
.env
文件路径:默认情况下,yiithings/yii2-dotenv
会尝试从Yii2应用程序的根目录加载.env
文件。如果您的.env
文件位于其他位置,您需要在应用程序配置中指定正确的路径。例如,在config/web.php
或config/console.php
文件中添加以下代码:'components' => [ // ... 'dotenv' => [ 'class' => 'yiithings\dotenv\DotEnv', 'path' => '/path/to/.env', // 替换为你实际的宝塔中.env文件路径 ], // ... ],
检查
.env
文件格式:确保.env
文件的格式正确,每行都是以KEY=VALUE
的形式定义环境变量。同时,确保没有注释或空行干扰解析过程。清除缓存:如果您之前已经运行过应用程序,尝试清除Yii2的缓存。
php yii cache/flush-all
或者手动删除
runtime
目录下的缓存文件。检查依赖包版本:确保您使用的
yiithings/yii2-dotenv
包与Yii2框架和其他依赖包兼容。可以尝试更新或回滚该包的版本,以解决可能存在的兼容性问题。
已解决在宝塔里删除putenv函数重启nginx和php