背景:在 Windows Server 上运行的 Intranet CMS。有时用户会抱怨他们从 Intranet 生成的一些报告不包含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() 更改了进程范围的语言环境。
现在这对我意味着什么?在脚本执行的瞬间,其他一些脚本会覆盖我的设置并设置为英语?
无论如何,如何以体面的方式克服这个问题?
注意关于这个有类似的问题,但他们并没有完全回答我的问题。