最近使用 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

10-05 17:00