我在弄清楚如何在 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"