Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony 2.8:如何根据主机名动态设置数据库参数_Php_Symfony - Fatal编程技术网

Php 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.

我有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中处理此问题

谢谢,
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%"