Shopware 6.4.1.2稳定版未在.env找到数据库凭据如何查询配置位置
Shopware 6.4.x 数据库配置排查方案
数据库配置存储的常见位置
- 项目根目录的
.env.local文件:Shopware 6默认优先级规则为.env.local>.env,生产环境通常会将数据库凭据等敏感配置放在.env.local文件中,同时将该文件排除在版本管理之外,你要找的DATABASE_URL参数大概率存放在这里 config/packages/doctrine.yaml配置文件:如果站点做过自定义数据库配置,可能会直接在Doctrine组件的配置文件中写死连接参数,优先级高于所有.env系列配置文件,可以打开文件搜索dbal下的url参数查看- 编译后的服务容器缓存文件:生产环境下Shopware会把所有配置编译到缓存文件中,路径为
var/cache/prod/Container<随机哈希值>/getDatabaseConnectionService.php,打开该文件搜索DATABASE_URL即可直接拿到解析后的完整数据库连接信息,不需要找原始配置文件 - 服务器级环境变量:如果站点是Docker部署、或者使用面板类工具配置了站点独立环境变量,数据库配置不会写入本地文件,需要到对应部署工具的站点环境配置页查看
快速获取生效配置的方法
- 可以通过Shopware自带的CLI命令直接查询,在项目根目录执行
bin/console debug:container --env=prod --parameter=database_url,命令会直接输出当前生效的数据库连接字符串 - 临时创建PHP测试文件提取配置:在项目根目录新建
test_db.php,写入以下代码后访问即可拿到完整数据库配置,验证后务必立即删除该文件避免信息泄露:
<?php require __DIR__ . '/vendor/autoload.php'; use Shopware\Core\Kernel; use Symfony\Component\Dotenv\Dotenv; // 加载所有env配置 (new Dotenv())->bootEnv(__DIR__.'/.env'); $kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']); $kernel->boot(); $db = $kernel->getContainer()->get('doctrine.dbal.default_connection'); print_r($db->getParams());
内容的提问来源于stack exchange,提问作者Abir
相关产品推荐
相关产品推荐

