Apache2.4 和 HHVM 作为 FastCGI-每个 VHost 的设置不同吗?

Apache2.4 和 HHVM 作为 FastCGI-每个 VHost 的设置不同吗?

我刚刚使用 ProxyPassmatch 指令在 FastCGI 模式下使用 HHVM 设置了 Apache 2.4 服务器。问题是,我现在可以为每个主机设置不同的根路径,但无法为每个 VHost 设置任何其他配置参数,例如 include_path、error_log 或其他经典 PHP 设置...

VHost 文件:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName host1.local
    DocumentRoot /var/www/host1/root

    ErrorLog ${APACHE_LOG_DIR}/host1_error.log
    CustomLog ${APACHE_LOG_DIR}/host1_access.log combined

    ProxyPassMatch (.php)$ fcgi://127.0.0.1:9000/var/www/host1/root

    # php_value include_path ".:/var/www/host1/includes"
    # php_value error_log "/var/www/host1/log/php_error.log"

    <Directory /var/www/host1/root>
        AllowOverride All
    </Directory>
</VirtualHost>

有报道称我也可以在 HHVM 中设置虚拟主机,但自从 Fast-CGI 以来,这似乎已被弃用。即便​​如此,除了我的 Apache VHost 文件之外,我还必须在单独的文件中提供 VHost 设置。

那么...我该如何为 HHVM 中的每个 VHost 提供不同的配置?


更新似乎我在使用答案中描述的 FcgidInitialEnv (或 Nginx 上的 fastcgi_param)方法时发现了 HHVM 的一个 Bug(或缺少的功能)。

https://github.com/facebook/hhvm/issues/3730

答案1

您可以通过 PHP_VALUE 环境变量传递参数。

在 Apache 中,您可以使用初始环境变量指令(适用于虚拟主机)在一行中定义所有参数。

FcgidInitialEnv PHP_VALUE "include_path=.:/var/www/host1/includes \n error_log=/var/www/host1/log/php_error.log"

相关内容