我刚刚使用 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(或缺少的功能)。
答案1
您可以通过 PHP_VALUE 环境变量传递参数。
在 Apache 中,您可以使用初始环境变量指令(适用于虚拟主机)在一行中定义所有参数。
FcgidInitialEnv PHP_VALUE "include_path=.:/var/www/host1/includes \n error_log=/var/www/host1/log/php_error.log"