使用服务器的Front Controller在哪里:在Symfony 2中运行

时间:2014-11-16 11:47:01

标签: php symfony

使用普通的旧apache服务器,您可以使用localhost:80/acme/app.php/routes

向Symfony提出请求

所以app.phpapp_dev.php 是前控制器。知道这一点,你几乎可以忘记它。但是当您使用PHP内置服务器时,您可以直接访问localhost:8000/routes

我查看了console脚本文件,它看起来像app.php,但我们只在服务器启动时调用它一次。胶水在哪里?

1 个答案:

答案 0 :(得分:3)

console文件是Symfony应用程序的CLI环境的前端控制器。 server:run是此环境的一部分,可以在FrameworkBundle中找到:ServerRunCommand(编辑:从Symfony 3.3开始,命令可以在the WebServerBundle中找到)

它启动PHP的内置Web服务器:php -S localhost:8000,它将所有的请求请求路由到所谓的路由脚本。在开发环境的情况下,FrameworkBundle中的router_dev.php路由器。

此路由器文件包含以下行:

$_SERVER['SCRIPT_FILENAME'] = $_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR.'app_dev.php';

其中假装对app_dev.php文件发出了命令请求。 (因此localhost:8000/something在此路由器脚本之后变为localhost:8000/app_dev.php/something。然后它包含app_dev.php文件来处理网站的呈现。