【问题标题】:Apache / PHP / php-fpm: locale settings change themselvesApache / PHP / php-fpm:区域设置会自行改变
【发布时间】:2015-08-14 17:32:20
【问题描述】:

我遇到了 Apache 和 php-fpm 的错误:语言环境设置会随机更改。

以下是正确的区域设置:

Array
(
    [decimal_point] => .
    [thousands_sep] => 
    [int_curr_symbol] => 
    [currency_symbol] => 
    [mon_decimal_point] => 
    [mon_thousands_sep] => 
    [positive_sign] => 
    [negative_sign] => 
    [int_frac_digits] => 127
    [frac_digits] => 127
    [p_cs_precedes] => 127
    [p_sep_by_space] => 127
    [n_cs_precedes] => 127
    [n_sep_by_space] => 127
    [p_sign_posn] => 127
    [n_sign_posn] => 127
    [grouping] => Array
        (
        )

    [mon_grouping] => Array
        (
        )

)

以下是更改后的设置:

Array
(
    [decimal_point] => ,
    [thousands_sep] =>  
    [int_curr_symbol] => EUR 
    [currency_symbol] => €
    [mon_decimal_point] => ,
    [mon_thousands_sep] =>  
    [positive_sign] => 
    [negative_sign] => -
    [int_frac_digits] => 2
    [frac_digits] => 2
    [p_cs_precedes] => 0
    [p_sep_by_space] => 1
    [n_cs_precedes] => 0
    [n_sep_by_space] => 1
    [p_sign_posn] => 1
    [n_sign_posn] => 1
    [grouping] => Array
        (
            [0] => 3
        )

    [mon_grouping] => Array
        (
            [0] => 3
        )

)

问题是随机发生的,我认为是由于过程造成的,就像在PHP doc 上所说的那样:

区域信息是按进程维护的,而不是按线程维护的。如果您在 Windows 上的 IIS、HHVM 或 Apache 等多线程服务器 API 上运行 PHP,您可能会在脚本运行时遇到语言环境设置的突然变化,尽管脚本本身从未调用 setlocale()。这是因为其他脚本同时在同一进程的不同线程中运行,使用 setlocale() 更改了进程范围的语言环境。

当删除 php-fpm 并使用 FastCGI 时,问题不再出现。我怎样才能让它与 php-fpm 一起工作?问题出现在共享主机上(我们是提供主机的公司),我们确实需要 php-fpm 才能使用池。

提前致谢!

【问题讨论】:

    标签: php apache


    【解决方案1】:

    我不确定 apache,但 Nginx 有一个配置变量来设置工作线程。将 apache 配置为一次运行一个线程可能会解决您的问题,但当然这可能不是理想的性能。

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-03
      • 2012-07-20
      • 2014-07-20
      • 2014-05-21
      相关资源
      最近更新 更多