0

PHPスクリプトで問題が発生し、Apacheエラーログに奇妙な警告が表示されることがあります。

bash: warning: setlocale: LC_ALL: cannot change locale (fr_FR.utf8)
bash: warning: setlocale: LC_ALL: cannot change locale (fr_FR.utf8)
bash: warning: setlocale: LC_ALL: cannot change locale (fr_FR.utf8)
bash: warning: setlocale: LC_ALL: cannot change locale (fr_FR.utf8)

以下は、この警告を生成するコードです。(gettextを構成するために使用されます)。

    $lang='fr_FR.utf8';
    $filename = 'default';
    putenv("LC_ALL=$lang");
    setlocale(LC_ALL, $lang);
    bindtextdomain($filename, './config/locale');
    bind_textdomain_codeset($filename, "UTF-8");
    textdomain($filename);

奇妙なことに、警告が体系的に表示されません。Apacheを再起動すると、数分間表示されなくなり(つまり、警告なしに何百ものリクエストを処理します)、その後徐々に表示され始めます。

ありがとうございました

4

1 に答える 1

0

setlocaleスレッドセーフではありません( PHPコンテキストでのスレッドセーフとはどういう意味ですか?を参照してください。そのため、ZendFrameworkは独自のロケールシステムを実装しています。

于 2012-07-18T15:12:29.663 に答える