一、 说明
本文件中所有的配置选项无特殊说明,均为系统的php.ini文件。由于可能各个系统使用的PHP版本不一样,PHP的默认选项也可能不一样,为方便操作,要求所有检查的配置项必须在配置文件中明确写出。
二、 检查的配置项
1. 启用PHP安全模式
safe_mode = On
或者修改httpd.conf,定义目录:
php_admin_value safe_mode 1
启用safe_mode,会对许多PHP函数进行限制,特别是和系统相关的文件打开、命令执行等函数。所有操作文件的函数将只能操作与脚本UID相同的文件。能在很大程度上提高PHP应用的安全性。
......
swoole不支持windows,所以windows只能使用Cygwin模拟linux环境安装 ......
PHP 中的 intval#
intval 函数的签名从官方文档可见:
```
intval ( mixed $var [, int $base = 10 ] ) : int
```
它的作用是将变量转换为整数值。其第二个参数 $base 用的不是很多。它代表转化所使用的进制。默认是 10 进制
可以通过如下简单示例,了解如何使用它:
```
$var1 = '123';
$var2 = '-123';
$var3 = [1, 2, ];
$var4 = [-1, 2, ];
var_dump(
intval($var1),
intval($var2),
intval($var3),
intval($var4)
);
// ......
今天运营小伙伴反馈说当商品金额设置为1.16时,调起微信失败。
我们的接口使用的是Thinkphp 5.3 + Mysql 5.6进行的开发
数据库中商品的的价格字段是
`price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '付费金额',
因为微信支付的金额单位是分,所以需要将元转成分及1.16 * 100;
原本以为这样就可以了,结果微信报错,提示数据为 1.15999999...
刚开始没有反应过来,以为是微信数据转换的问题,后来才反应过来
decimal 的数据类型其实就是float 型
而float是浮点型,用来表示实数,其值是近似值。
所以使用intval(1.16 * 100) ......