2012-10-16 49 views
4

在使用PDO連接到DB2之後,PHP丟失所有語言環境信息的原因是什麼?PHP - PDO連接(DB2)後出現的語言環境信息

我總是必須在連接後再次設置區域設置信息。

<?PHP 
//set locale information 
setlocale(LC_MONETARY,'en_US'); 

//print location information 
print_r(localeconv()); 

// Array 
// (
//  [decimal_point] => . 
//  [thousands_sep] => 
//  [int_curr_symbol] => USD 
//  [currency_symbol] => $ 
//  [mon_decimal_point] => . 
//  [mon_thousands_sep] => , 
//  ... 
// ) 

//************************************************ 
//create conenction to server 
$connection= new PDO("odbc:server", 'username', 'password'); 
//************************************************ 

//see locale information after creating a connection 
print_r(localeconv()); 

// Array 
// (
//  [decimal_point] => . 
//  [thousands_sep] => 
//  [int_curr_symbol] => 
//  [currency_symbol] => 
//  [mon_decimal_point] => 
//  [mon_thousands_sep] => 
//  ... 
// 
// ) 
?> 
+0

您是否正在一個(多線程)的網絡服務器上運行其他PHP腳本(也可能使用'setlocale()')正在同時運行?如果是這樣,一定要閱讀[本文檔中的註釋](http://php.net/manual/en/function.setlocale.php#refsect1-function.setlocale-notes)。 –

+0

我們使用Linux與Apache MPM(默認設置) – user1529733

+0

我無法複製您的問題。我正在測試運行Apache 2.2.22和PHP 5.3.10的Ubuntu 12.04 LTS。當我執行** apache2 -l **時,我看到_prefork.c_。這裏是我的PDO連接命令:** $ this-> db_connection = new PDO(「odbc:DRIVER = {iSeries Access ODBC Driver}; SYSTEM = $ this-> he_database_server; PROTOCOL = TCPIP」,$ temp_username,$ temp_password); * * –

回答

0

如果您在Windows上,那麼存在一般性問題,即setlocale()不起作用。在我的情況下,它在腳本運行時切換到腳本隨機點的基本語言環境。我贏得了7個專業64位。當時沒有其他腳本正在運行。