Php Symfony 2.8:如何根据主机名动态设置数据库参数
我有100个三级域名都指向同一台服务器,其中我有一个symfony2.8项目。我需要Symfony能够连接到不同的数据库,这取决于第三级域 我知道我可以创建任意数量的环境,但环境的sintax更像: -domainname.com/app_customer1.php/[…] -domainname.com/app_customer2.php/[…] -domainname.com/app_customer3.php/[…] 白色我想要这个URL结构: -customer1.domainname.com/[…] -customer2.domainname.com/[…] -customer3.domainname.com/[…] 在另一个Laravel 5项目中,我已经能够做到这一点。您建议如何在Symfony 2.8中处理此问题 谢谢,Php Symfony 2.8:如何根据主机名动态设置数据库参数,php,symfony,Php,Symfony,我有100个三级域名都指向同一台服务器,其中我有一个symfony2.8项目。我需要Symfony能够连接到不同的数据库,这取决于第三级域 我知道我可以创建任意数量的环境,但环境的sintax更像: -domainname.com/app_customer1.php/[…] -domainname.com/app_customer2.php/[…] -domainname.com/app_customer3.php/[…] 白色我想要这个URL结构: -customer1.domainname.
Guido您可以根据主机设置
数据库\u名称
,如下所示:
// app/config/parameters.php
<?php
$dbName = 'default'; // For CLI
if (isset($_SERVER['SERVER_NAME'])) {
$dbName = $_SERVER['SERVER_NAME'];
}
$container->setParameter('database_name', $dbName);
但它在CLI中不起作用,因此,如果您可以实现Laravel中使用的技巧来定义基于条件的数据库名称(或任何其他参数),这可能会很好。如果解决了您的问题,请接受答案:),如果您认为这是一个好答案,请投票。非常感谢。亲爱的Chalasr,使用它,我发现Symfony缓存了在最后一次缓存:clear之后第一次加载Symfony时使用的配置参数。这意味着如果我清除缓存,然后访问db1.mysite.it,它会正确地为db1加载参数,但如果在这之后我访问db2.mysite.it,它会继续考虑(因为它的缓存)db1参数!所以,不可能采用这种策略!
# app/config/config.yml
imports:
# ...
- { resource: parameters.php }
doctrine:
# ...
dbal:
# ...
dbname: "%database_name%"