0

私は時々Apacheのエラーログで奇妙な警告を引き起こすPHPスクリプトに関する問題を抱えています。

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を再起動しても、数分間表示されず(何の警告もなく何百ものリクエストを処理した後)、次第に表示され始めます。

ありがとうございました


  • 読んだこの? - RobIII
  • はい。私のサーバー上のApacheはpreforkモードで動作しているのでこれは私には関係ないと思いました - David

1 답변


0

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


  • Apacheがプリフォークモードで実行されているため、これは問題にならないと思いましたか。 - David

リンクされた質問


関連する質問

最近の質問