【发布时间】:2023-04-01 14:10:01
【问题描述】:
我的客户有 2 台服务器,分期和直播。他们有不同的 PHP 版本(我知道——他们以这种方式提供)。我有这个代码:
setlocale(LC_MONETARY, 'en_GB');
$product = wc_get_product( $product_id );
if ($product->get_price()){
return (string) money_format('%i', $product->get_price());
}
在临时服务器上,它返回格式如下的价格:'GBP 10.00' 然而在现场它返回的价格没有英镑前缀,只是'10.00'
运行时在两台服务器上: 语言环境-a | grep en_GB 我明白了:
en_GB
en_GB.iso88591
en_GB.iso885915
en_GB.utf8
暂存服务器在 Linux 版本 2.6.32-696.18.7.el6.x86_64 (mockbuild@c1bl.rdu2.centos.org) 上运行 PHP 5.6.21 (gcc 版本 4.4.7 20120313 (Red Hat 4.4.7- 18) (GCC) ) #1 SMP 2018 年 1 月 4 日星期四 17:31:22 UTC
Live 正在 Linux 版本 4.9.96mtv23 (ci_slave@cislave73-git.mtsvc.net)(gcc 版本 4.7.2 (Debian 4.7.2-5))上运行 PHP 5.3.28 #1 SMP,2014 年 5 月 15 日星期二: 2018 年太平洋夏令时间 22:40
其他发现... 我现在发现,当从循环中多次调用此代码时(即当我返回大量产品时),就会出现问题。如果在 php 脚本执行期间只调用一次(返回单个产品),它就可以工作!
【问题讨论】: