Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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
控制Symfony 3.4框架进入生产或开发模式的正确方法是什么?_Symfony_Symfony 3.4 - Fatal编程技术网

控制Symfony 3.4框架进入生产或开发模式的正确方法是什么?

控制Symfony 3.4框架进入生产或开发模式的正确方法是什么?,symfony,symfony-3.4,Symfony,Symfony 3.4,因此,我已设置了一个Symfony 3.4应用程序,我在本地计算机上使用Symfony安装程序按照以下说明下载了该应用程序: 我已经在笔记本电脑上安装并运行了大量代码 我使用这个应用程序的目的是让它与我的雇主在同一台服务器上的其他旧项目一起运行。这些旧项目必须在远程开发服务器上开发,这意味着我的Symfony应用程序的开发版本也必须位于远程开发服务器上 当我在本地机器上访问我的项目时,Symfony会通过/web/app_dev.php自动引导。但是当我把它放在远程开发服务器上时,它会自动用/

因此,我已设置了一个Symfony 3.4应用程序,我在本地计算机上使用Symfony安装程序按照以下说明下载了该应用程序:

我已经在笔记本电脑上安装并运行了大量代码

我使用这个应用程序的目的是让它与我的雇主在同一台服务器上的其他旧项目一起运行。这些旧项目必须在远程开发服务器上开发,这意味着我的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在哪里决定这一点


感谢您的帮助。

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

然后您就有了多个部署,它们要么在生产中,要么在开发中


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

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

然后您就有了多个部署,它们要么在生产中,要么在开发中


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

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

可以获得如下所示的环境变量:

$env=strtolower(getenv('SYMFONY_uuenv')

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

$kernel=newappkernel($env,$env=='dev')

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


希望有帮助

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

可以获得如下所示的环境变量:

$env=strtolower(getenv('SYMFONY_uuenv')

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

$kernel=newappkernel($env,$env=='dev')

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

希望有帮助