这仅发生在Windows 7上的IIS 7.5服务器上(在linux小数点上设置得很好)。
$locale = setlocale(LC_ALL, 'pl_PL.utf8', 'pl_PL', 'pl', 'polish');
echo $locale;
echo strftime('%B');
print_r(localeconv());
输出:
Polish_Poland.1250
grudzień
Array (
[decimal_point] => .
...
)
如你所见:
.
,而应为,
PHP是运行为FastCGI模块的VC9 TS,尝试从CLI运行,结果相同...
知道为什么以及是否有修复?
答案 0 :(得分:1)
如果在CLI级别发生这种情况,那么我会说这是PHP中的一个错误,应该报告(http://bugs.php.net)。
然而,在你这样做之前,你应该采取以下步骤,这样他们就不会对你大喊大叫:
确保您运行最新的稳定版PHP(5.3.8)!!他们会问你这个版本,如果你使用的是旧版本,他们可能会把它标记为伪造并告诉你下载当前版本。
使用相同的脚本在Linux中重复测试。结果将告诉您该错误是否特定于Windows生成。如果是,它可能会或可能不是Windows本身的问题(在这种情况下皮埃尔可能会有点恼火),但我会说它仍然值得发布,以便在错误跟踪器上有这个问题的记录。 / p>
这不是必需的,但是将您的脚本转换为PHPT文件然后发布可能会让您得到更快速的响应。
如果可能,请尝试在单独的Windows框中复制此错误,以便排除操作系统配置的问题。如果在Linux中也发生错误,您当然可以跳过此步骤。
发布错误后,请在此处发布指向该链接的链接。您可能会收到回复,要求提供更多信息,因此请密切关注并做好准备,不要太多延迟。
此过程将确认它是否是PHP中的错误。如果它是一个错误,那么您的报告将导致下一个版本中的修复。如果发布了修补程序,我可以将其修补到源代码中,并向您发送一个自定义构建版本,直到下一个版本发布为止。
哦,在一个不相关的说明中,你应该不在IIS / FastCGI上使用PHP的ZTS版本!我不认为这与您遇到的问题有关,但如果继续使用该版本,您可能会遇到其他问题(性能下降,随机崩溃等)。你想要的是NTS(非线程安全)构建。
以下是在Windows上运行PHP的基本经验法则:
Apache:线程安全(ZTS)
IIS ISAPI:线程安全(ZTS)
IIS FastCGI:非线程安全(NTS)