具有2个Symfony安装的Nginx不能使用单独的数据库

时间:2018-11-01 09:14:40

标签: symfony nginx environment-variables

在V服务器上运行单个nginx实例,我想进行两个单独的Symfony安装:

第一个安装现在已经运行了几个月,第二个安装是最近安装的并且可以公开访问,但是当通过控制台处理它时,它将使用第一个安装的数据库连接!

Nginx

symfony1.conf

...
location ~ ^/index\.php(/|$) {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;

        fastcgi_param APP_ENV prod;
        fastcgi_param APP_SECRET XXX;
        fastcgi_param DATABASE_URL "mysql://user:password@127.0.0.1:3306/symfony1_db";
    ...
}
...

symfony2.conf

...
location ~ ^/index\.php(/|$) {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;

        fastcgi_param APP_ENV prod;
        fastcgi_param APP_SECRET XXX;
        fastcgi_param DATABASE_URL "mysql://user:password@127.0.0.1:3306/symfony2_db";
    ...
}
...

当我尝试为第二次安装(php /var/www/html/smyfony2/bin/console doctrine:database:create创建架构时,出现此错误:

  

无法为名为default的连接创建数据库symfony1_db

我的想法是要更改

fastcgi_param DATABASE_URL "mysql://user:password@127.0.0.1:3306/symfony2_db";

fastcgi_param DATABASE_URL_2 "mysql://user:password@127.0.0.1:3306/symfony2_db";

但是

  • 那是必要的吗?

  • 那有可能吗?

  • 我必须在哪里告诉我的Symfony安装

任何提示都值得赞赏。

说明:

当我通过浏览器访问该网站时,一切都很好,这只是让我的控制台令人困惑。

1 个答案:

答案 0 :(得分:1)

如果您在终端中调用console命令,则不会应用您的nginx配置,因此与您的问题无关。

您可以通过将symfony/dotenv程序包添加到应用程序中来解决此问题。

composer require symfony/dotenv

然后启用bin/console文件中的组件:

(new Dotenv())->load(__DIR__.'/../.env');

现在在两个应用程序的根文件夹中创建两个具有正确数据库参数/环境变量的.env文件。

# .env
DATABASE_URL='mysql://user:password@127.0.0.1:3306/symfony2_db'

此外,您可以使用direnv之类的工具来加载不同的环境变量,具体取决于您的Shell当前的工作目录。