Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Deploying Symfony2 on HHVM + Apache + fastCGI

I am attempting to deploy a Symfony2 (2.4) app on HHVM (3.0) and Apache (2.4) via fastCGI, as per the instructions here - https://github.com/facebook/hhvm/wiki/FastCGI

While I can properly execute single php files this way, it does not seem to work with the Symfony2 routing system. The routes are properly resolved (e.g. localhost/myapp/web/app_dev.php/my/route/to/something), but the pages themselves do not load. Instead, the page simply outputs "not found", and HHVM logs the following:

Nothing to do. Either pass a .php file to run, or use -m server

Which seems indicative that it believes it has not been passed a proper php file.

It should be noted that deployment worked fine using the built-in webserver that came with HHVM 2.x. This server, however, is no longer supported as of HHVM 3.0.

I am at quite a loss as to what configurations to change in order to make this work. Even pointers leading to this being properly resolved would be a good answer.

like image 705
csvan Avatar asked Apr 03 '14 04:04

csvan


1 Answers

Finally manage to resolve (most!) of this by using the following configuration file:

Eval {
    Jit = true
    JitWarmupRequests = 1
}

Log {
    Level = Info
    Header = true

    UseLogFile = true
    File = /var/log/hhvm_error.log

    Access {
        * {
            File = /var/log/hhvm_access.log
        }
    }
}

Server {
    IP = 127.0.0.1
    Port = 9000
    ThreadCount = 77

    # Change to match your local root 
    SourceRoot = /opt/lampp/htdocs/

    MaxPostSize = 65  # in MB
}

VirtualHost {
 * {
   Pattern = .*
   RewriteRules {
      * {
        pattern = .?

        # change to app.php for production use
        to = app_dev.php

        # append the original query string
        qsa = true
      }
   }
 }
}

Stats {
    Web = true
    Memory = true
    SQL = true
}

Http {
    DefaultTimeout = 5          
    SlowQueryThreshold = 5000
}

This is based on a config for HHVM 2.* which I found here: http://labs.qandidate.com/blog/2013/10/21/running-symfony-standard-on-hhvm/

In addition, if you are using Doctrine, you will have to modify your dependencies in order to get it working properly with HHVM due to a previous bug: Symfony2 and HHVM Declaration of Doctrine\DBAL\Driver\PDOConnection::prepare() must be compatible

like image 184
csvan Avatar answered Sep 30 '22 23:09

csvan