1

背景:在 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() 更改了进程范围的语言环境。

现在这对我意味着什么?在脚本执行的瞬间,其他一些脚本会覆盖我的设置并设置为英语?

无论如何,如何以体面的方式克服这个问题?

注意关于这个有类似的问题,但他们并没有完全回答我的问题。

4

0 回答 0