在HHVM+Apache+fastCGI上部署Symfony2


Deploying Symfony2 on HHVM + Apache + fastCGI

我正试图根据此处的说明,通过fastCGI在HHVM(3.0(和Apache(2.4(上部署Symfony2(2.4(应用程序-https://github.com/facebook/hhvm/wiki/FastCGI

虽然我可以用这种方式正确地执行单个php文件,但它似乎不适用于Symfony2路由系统。路由得到了正确解析(例如localhost/myapp/web/app_dev.php/my/route/to-something(,但页面本身不会加载。相反,页面只是输出"未找到",HHVM记录以下内容:

没什么可做的。要么传递一个.php文件来运行,要么使用-m服务器

这似乎表明它认为没有向它传递正确的php文件。

需要注意的是,使用HHVM 2.x附带的内置Web服务器进行部署效果良好。但是,自HHVM 3.0起,该服务器不再受支持。

我不知道该更改什么配置才能使其发挥作用。即使是导致这一问题得到妥善解决的指针也将是一个很好的答案。

最终通过使用以下配置文件解决了(大部分!(问题:

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
}

这是基于我在这里找到的HHVM 2.*的配置:http://labs.qandidate.com/blog/2013/10/21/running-symfony-standard-on-hhvm/

此外,如果您正在使用Doctrine,您将不得不修改您的依赖项,以便使其与HHVM正常工作,因为以前的错误:Symfony2和HHVM Declaration of Doctrine ''DBAL''Driver''PDOConnection::prepare((必须兼容