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
Apache Symfony 2.4的ProxyPassMatch规则_Apache_Symfony_Php - Fatal编程技术网

Apache Symfony 2.4的ProxyPassMatch规则

Apache Symfony 2.4的ProxyPassMatch规则,apache,symfony,php,Apache,Symfony,Php,我正在使用mod_proxy_fcgi和PHP-FPM运行Apache,并试图让它在Symfony下工作。这是我第一个使用Symfony的项目,目前我只是对它有了一些感觉 我的vhost定义当前看起来像: <VirtualHost *:80> ServerName symfony.dev Documentroot "/vagrant/symfony/web" DirectoryIndex app.php ProxyTimeout 600 ProxyPassMat

我正在使用mod_proxy_fcgi和PHP-FPM运行Apache,并试图让它在Symfony下工作。这是我第一个使用Symfony的项目,目前我只是对它有了一些感觉

我的vhost定义当前看起来像:

<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>

服务器名symfony.dev
Documentroot“/vagrant/symfony/web”
DirectoryIndex app.php
代理超时600
ProxyPassMatch^/(.\.php(/.*)$fcgi://127.0.0.1:5090/vagrant/symfony/web/$1
允许超越所有
通融
当我转到
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
,而没有加载演示,内联资源的路径断了。

我在ProxyPassMatch上也遇到了同样的问题,但是在和SetHandler上一切都很好

<VirtualHost *:80>
   ServerName project.dev
   ServerAlias www.project.dev


   <FilesMatch \.php$>
       SetHandler proxy:fcgi://127.0.0.1:9000
   </FilesMatch>

   #ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/project/web/$1

   ## Vhost docroot
   DocumentRoot "/var/www/project/web"

   ## Directories, there should at least be a declaration for /var/www/awesome
   <Directory "/var/www/project/web">
       AllowOverride All
       Order allow,deny
       Allow from All
   </Directory>

   ## Load additional static includes

   ## Logging
   ErrorLog "/var/www/project/app/logs/apache2/error.log"
   ServerSignature Off
   CustomLog "/var/www/project/app/logs/apache2/access.log" combined

   ## SetEnv/SetEnvIf for environment variables
   SetEnv APP_ENV dev

   ## Custom fragment
 </VirtualHost>

ServerName项目.dev
ServerAlias www.project.dev
SetHandler代理:fcgi://127.0.0.1:9000
#ProxyPassMatch^/(.\.php(/.*)$fcgi://127.0.0.1:9000/var/www/project/web/$1
##Vhost docroot
DocumentRoot“/var/www/project/web”
##目录中,至少应该有一个/var/www/awesome的声明
允许超越所有
命令允许,拒绝
通融
##负载附加静态包括
##伐木
ErrorLog“/var/www/project/app/logs/apache2/error.log”
服务器签名关闭
CustomLog“/var/www/project/app/logs/apache2/access.log”组合
##环境变量的SetEnv/setenif
SetEnv应用程序和环境开发
##自定义片段

你能解决这个问题吗?我也有同样的问题PHP FPM的问题,通常的$u服务器变量集没有按照标准正确设置。解决方法是在构造HttpFoundation/Request之前自己设置这些变量。现在,我不完全确定需要设置哪些变量(SCRIPT\u FILENAME和/或PATH\u INFO),或者在Symfony项目中(在AppKernel.php中?)修改它们的最佳位置。