【发布时间】:2014-03-10 07:26:33
【问题描述】:
我正在使用 mod_proxy_fcgi 和 PHP-FPM 运行 Apache,并试图让它在 Symfony 中运行。这是我使用 Symfony 的第一个项目,目前只是对它有所了解..
我的虚拟主机定义目前看起来像:
<VirtualHost *:80>
ServerName symfony.dev
Documentroot "/vagrant/symfony/web"
DirectoryIndex app.php
ProxyTimeout 600
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:5090/vagrant/symfony/web/$1
<Directory "/vagrant/symfony/web">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
当我转到http://symfony.dev/app_dev.php/ 时,页面会加载,但所有链接/路径都包含完整的文件系统页面。例如,“运行演示”的链接是http://symblog.dev/vagrant/symfony/web/app_dev.php/demo/。
是否有其他可行的 ProxyPassMatch 规则,或者可以补偿的 Symfony 配置?
我尝试了 ^/(.*\.php)(/.*)?$ 加载 app_dev.php/,但随后 app_dev.php/demo/ 似乎加载了 app_dev.php 而不是演示,内联资源的路径损坏。
【问题讨论】:
-
你能解决这个问题吗?我也有同样的问题
-
问题在于 PHP FPM,其中通常的 $_SERVER 变量集没有根据标准正确设置。解决方法是在构造 HttpFoundation/Request 之前自己设置这些变量。现在我不完全确定需要设置哪些变量(SCRIPT_FILENAME 和/或 PATH_INFO)或在 Symfony 项目中修改它们的最佳位置(在 AppKernel.php 中?)。