2010-06-29 71 views
3

我在Windows上运行PHP。 Windows上的PHP插件只是扩展文件夹中的DLL,我几乎无法配置这些插件。Env变量在Windows上的PHP插件

例如,ADAP插件(它是OpenLDAP本身)具有我无法在运行时更改的设置。幸运的是,OpenLDAP允许我通过搞乱环境变量来改变其中的一些设置。我试图在运行时通过添加两者来设置它们:

// this apparently works on Linux 
putenv('VARIABLE=value'); 
// tried this one as well 
$_ENV['VARIABLE'] = 'value'; 

但是这并不奏效。我不得不在Windows的环境变量中添加它(并且确实有效),但这在后端会造成太大的痛苦,并且会在我移动它时破坏代码。有没有更好的方式来做到这一点,否则我只需要处理它呢?

谢谢

回答

0

尝试在加载dll扩展之前设置环境变量。也就是说,不要通过php.ini加载dll,而是使用putenv()和之后的dl()。通常一个DLL应该与主进程共享环境变量,但你永远不知道。

或者使用SetEnv在.htaccess中设置任何必需的选项。对于Apache Web服务器,这至少是可移植的。想想看,如果你正在运行mod_php而不是FastCGI版本,你也应该尝试apache_setenv()

顺便说一句,putenv总是有PHP的bug,http://bugs.php.net/50690,可能是这里的情况。