2010-06-29 70 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,可能是這裏的情況。