【问题标题】:UTF-8 locale dropUTF-8 语言环境删除
【发布时间】:2012-11-20 12:02:57
【问题描述】:

我已经编写了这个测试脚本:

<?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 版本提交错误。

标签: php locale gentoo


【解决方案1】:

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

警告:语言环境信息是按进程维护的,而不是按进程维护的 线。如果您在 IIS 等多线程服务器 API 上运行 PHP 或 Windows 上的 Apache,您可能会遇到语言环境的突然变化 脚本运行时的设置,尽管脚本本身永远不会 称为 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。

【讨论】:

    猜你喜欢
    • 2012-03-21
    • 1970-01-01
    • 2017-04-19
    • 2016-02-16
    • 2014-01-01
    • 1970-01-01
    • 2017-08-10
    • 2013-11-26
    • 1970-01-01
    相关资源
    最近更新 更多