0

所以我设置了一个 Symfony 3.4 应用程序,我按照此处的说明在本地机器上使用 Symfony 安装程序下载了该应用程序:

https://symfony.com/download

我已经在笔记本电脑上本地启动并运行了大量代码。

我使用这个应用程序的目的是让它在同一台服务器上与我的雇主的其他旧项目一起运行。这些旧项目必须在远程开发服务器上开发,这意味着我的 Symfony 应用程序的开发版本也必须位于远程开发服务器上。

当我在本地机器上访问我的项目时,Symfony 会自动通过 /web/app_dev.php 引导。但是当我把它放在远程开发服务器上时,它会自动使用 /web/app.php 引导,就好像我在生产中一样。

我在这两个文件中看到 symfony 声明内核并选择开发与生产模式,我想我可以编写逻辑以使工作不同:

// line 24 in /web/app_dev.php
$kernel = new AppKernel('dev', true);

// line 10 in /web/app.php
$kernel = new AppKernel('prod', false);

但似乎正确的方法是让流量转到开发服务器上的 /web/app_dev.php,而不是弄乱逻辑。我仍然计划将 /web/app.php 用于生产,它将在另一台服务器上。

我的开发服务器进入开发模式的正确方法是什么?我看不出 symfony 在哪里确定这一点。

谢谢你的帮助。

4

2 回答 2

1

通常,您会将环境变量设置在 .yml(或 .php 或 .xml,具体取决于您的文件偏好选择)文件中,并将其固定用于特定部署。

然后,您有多个处于生产或开发阶段的部署。

另一种方法是让环境由用于访问的 url 确定,您会看到本地访问自动确定开发模式,而“远程”访问自动确定生产模式。但在大多数情况下,固定每个部署会更有意义。

于 2018-08-16T21:52:39.973 回答
1

为此,您有多种选择。您的决定取决于个人喜好和您的要求。就我而言,我修改了app.php文件以读取环境变量,然后设置适当的环境。我在应用程序的虚拟主机中设置了环境变量。

您可以像这样获取环境变量:

$env = strtolower(getenv('SYMFONY__ENV'));

然后你可以像这样创建内核:

$kernel = new AppKernel($env, $env === 'dev');

顺便说一句app_dev.php,默认情况下,路由流量在远程服务器上不起作用,因为有一个条件检查以确保流量来自本地主机。因此,如果您决定采用该路线,则需要修改app_dev.php文件以删除该检查,否则您将收到 403 禁止错误。我最近遇到了同样的问题。

希望有帮助!

于 2018-08-16T21:59:26.870 回答