背景: Windows Server で実行されているイントラネット CMS。イントラネットから生成した一部のレポートに、setlocale
そのスクリプト用に構成されたレポートが含まれていないと、ユーザーから苦情が寄せられることがあります。これは、März
(ドイツ語) を取得する代わりにMarch
(英語) を取得することを意味します。
私が持っているPHPスクリプトのすぐ上に:
setlocale(LC_TIME, 'de_DE','deu');
これが返されますstring(19) "German_Germany.1252"
。これは 99.9% の確率で問題なく動作します。
PHP ページに次の警告があります。
ロケール情報は、スレッドごとではなく、プロセスごとに保持されます。Windows 上の IIS や Apache などのマルチスレッド サーバー API で PHP を実行している場合、スクリプト自体が setlocale() を呼び出すことはありませんが、スクリプトの実行中にロケール設定が突然変更されることがあります。これは、同じプロセスの異なるスレッドで同時に実行されている他のスクリプトが原因で発生し、setlocale() を使用してプロセス全体のロケールを変更します。
これは私にとって何を意味するのでしょうか?スクリプトが実行される一瞬で、他のスクリプトが私の設定を上書きして英語に設定されますか?
とにかく、これをまともな方法で克服するにはどうすればよいですか?
NBこれに関して同様の質問がありますが、私の質問には完全には答えていません。