我遇到了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才能使用池。
提前致谢!
答案 0 :(得分:0)
我不确定apache,但是Nginx有一个配置变量来设置工作线程。配置apache一次运行一个线程可能会解决您的问题,但当然可能不希望性能明智。