在V服务器上运行单个nginx实例,我想进行两个单独的Symfony安装:
第一个安装现在已经运行了几个月,第二个安装是最近安装的并且可以公开访问,但是当通过控制台处理它时,它将使用第一个安装的数据库连接!
...
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";
...
}
...
...
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安装
任何提示都值得赞赏。
当我通过浏览器访问该网站时,一切都很好,这只是让我的控制台令人困惑。
答案 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当前的工作目录。