UTF-8语言环境的删除

3
我写了这个测试脚本:
<?php
ini_set('error_reporting', E_ALL );
putenv('LC_ALL=ru_RU.UTF-8');
putenv('LANG=ru_RU');
putenv('LANGUAGE=ru_RU');
setlocale (LC_ALL, "ru_RU.UTF-8");
for($i=0; $i<7; $i++){
    echo setlocale(LC_ALL, 0) . "<br>\n";
    sleep(1);
}
?>

这是输出结果:
ru_RU.UTF-8
ru_RU.UTF-8
C
ru_RU.UTF-8
ru_RU.UTF-8
ru_RU.UTF-8
C

为什么地域设置有时会崩溃?如何修复这个问题?

升级到最新的稳定版PHP,问题仍然存在吗?向您的操作系统和PHP版本提交一个错误报告。 - JamieL
1个回答

0

http://php.net/manual/en/function.setlocale.php...

警告:本地信息是以进程为单位维护的,而不是线程。如果您正在运行PHP在多线程服务器API(如IIS或Apache on Windows)上,则可能会在脚本运行时经历语言环境设置的突然更改,尽管脚本本身从未调用setlocale()。这是由于其他脚本同时在同一进程的不同线程中运行,并使用setlocale()更改进程范围的语言环境。

我不是PHP专家,但我想一个简单的解决方法是首先使用正确的语言环境启动PHP。您用gentoo标记了它。如果您使用的是Gentoo而不是Apache的mod_php,则应该能够使用www-servers / spawn-fcgi中的/ etc / init.d / spawn-fcgi(我编写的)来设置LC_ALL。有关详情,请参见/ etc / conf.d / spawn-fcgi。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接