2014-02-12 56 views
2

我使用mod_proxy_fcgi和PHP-FPM運行Apache,並試圖讓它工作Symfony。這是使用Symfony和我剛開始的那一刻一點感覺我的第一個項目..Symfony 2.4的ProxyPassMatch規則

我的虛擬主機定義目前的樣子:

<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,而不是演示,用碎路徑內聯資源。

+0

你能解決嗎?我遇到同樣的問題 –

+0

錯誤是PHP FPM的錯誤,其中$ _SERVER變量的通常集合未根據標準正確設置。解決方法是在構建HttpFoundation/Request之前自行設置這些變量。現在我並不完全確定需要設置哪些變量(SCRIPT_FILENAME和/或PATH_INFO),還是在Symfony項目中修改它們的最佳位置(在AppKernel.php中?)。 – user2045006

回答

0

我有與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> 
相關問題