最近使用 Laravel 写项目时,首先项目在本地环境 部署,返回数据没有问题。但是将项目部署在 云服务器环境情况却发生了变化。所有的 Integer 型都变成了 String 型。导致部分 Javascript 部分的number计算出错。
虽然重构代码可以解决问题,但是涉及的代码片段范围比较广泛,不便于修改代码片段解决。
两个运行环境部署方法一致,数据库字段类型没有问题。
本地环境返回样例
{
"data1": 1,
"data2": 0,
}
云服务器环境返回样例
{
"data1": "1",
"data2": "0",
}
通过错误查找定义为,php扩展 mysqlnd 没有开
首先,php是如何与mysql交互的。PHP通过扩展与mysql server连接通信。
扩展有三种:mysql,mysqli和pdo。
其中mysql扩展已经不被建议使用,它将在5.5被废弃,而在php7中被去除。
驱动有两种:libmysqlclient(MySQL client server library )和mysqlnd(MySQL native driver )。
在5.3之前,默认使用的都是libmysql.从5.3开始mysqlnd已经内置于php源代码中,并且官方强烈建议使用这个驱动,只要在编译的时候加上就行了,比如:./configure --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql=mysqlnd。
而从5.4开始,三种api的驱动默认都将为mysqlnd,所以编译的时候不需要指定驱动了,比如:./configure --with-mysqli --with-pdo-mysql --with-mysql。
mysqlnd官方手册http://php.net/manual/zh/book.mysqlnd.php