如何使用 SetEnv 和 mod_fcgid 将虚拟主机特定选项传递给我的 PHP 应用程序?(apache2)

如何使用 SetEnv 和 mod_fcgid 将虚拟主机特定选项传递给我的 PHP 应用程序?(apache2)

我在弄清楚如何在 FastCGI 下处理某些在 mod_php 下很容易运行的事情时遇到了一些麻烦。之前我习惯SetEnv将选项从 VirtualHost 指令传递到我的 PHP 应用程序。例如:

SetEnv MYAPP_LOGGING_ROOT "/usr/local/myapp/logs"

我能够从中访问该值$_SERVER['MYAPP_LOGGING_ROOT'],这是一种非常方便的管理方法。但是,在 FastCGI 环境中,该值未传递给我的 PHP 应用程序。

我尝试了以下操作,但它似乎也没有一直传递到我的 PHP 应用程序:

FcgidInitialEnv MYAPP_LOGGING_ROOT "/usr/local/myapp/logs"

我是否遗漏了一些简单的事情或者我需要做一些更复杂的事情?

答案1

SetEnv 与 mod-fcgid 配合使用。我的配置:

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
            FCGIWrapper /usr/lib/cgi-bin/php5
            AddHandler fcgid-script .php
            Options ExecCGI Indexes
            SetEnv MYAPP_LOGGING_ROOT "/usr/local/myapp/logs"
    </Directory>

foo.php:

<?php
    var_dump($_SERVER["MYAPP_LOGGING_ROOT"]);
?>

测试:

curl localhost/foo.php 
string(21) "/usr/local/myapp/logs"

相关内容