首页 > 数据库 >Ubuntu18.04下使用PHP7.2的连接sql server数据库

Ubuntu18.04下使用PHP7.2的连接sql server数据库

时间:2023-10-14 23:32:15浏览次数:68  
标签:-- 22% SQL PHP7.2 server sql freetds php 安装


 一、简介

SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。Microsoft SQL Server近年来不断更新版本,1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用户见面;SQL Server 2000是Microsoft公司于2000年推出,目前最新版本是2017年份推出的SQL SERVER 2017。

二、安装说明

我们建议phper使用pdo方式连接数据库,pdo可以为你屏蔽数据库之间的繁琐的语句差异,让我们的代码变得更加简洁

php要连接mssql数据库,需要安装以下扩展和依赖程序进行支持:

1:安装freetds程序
2:安装php扩展pdo-dblib

dblib是数据库元件库,该库是基于sqlser修改的数据库驱动,包含了连接mssql数据库的函数库

FreeTDS 是一个开源的程序库,是TDS(表列数据流 )协议的再次实现。它可以被用在Sybase的db-lib或者ct-lib库。它也包含一个ODBC的库。允许许多开源的应用软件比如Perl和PHP(或者你自己的c或C++程序)去连接到Sybase或 Microsoft SQL服务器

三、安装freetds程序

3.1:下载freetds源码压缩包

mkdir -p /home/www/freetds/source  
cd /home/www/freetds/source  
wget  http://wjh-oss-prod.oss-cn-shenzhen.aliyuncs.com/oss/admin/freetds-1.2.3.tar.gz  //可以到官网下载最新包

Ubuntu18.04下使用PHP7.2的连接sql server数据库_Server

3.2:编译安装freetds程序

tar -zxvf freetds-1.1.23.tar.gz  
cd freetds-1.1.23  
./configure   
  --prefix=/usr/local/freetds  //注意,该目录很重要,后面编译php-dblib扩展的时候会用到  
  --with-tdsver=7.4            //这个地方是数据版本号, 最新的是8.0, 使用最多的是7.0+, 如果版本报错可以换个版本重新编译  
  --enable-msdblib   
  --enable-dbmfix   
  --with-gnu-ld    
  --enable-shared   
  --enable-static  



make  
make install

Ubuntu18.04下使用PHP7.2的连接sql server数据库_php_02

四、安装php-dblib扩展

这里使用源码编译安装,你也可以根据实际情况选择apt或者yum安装

cd /home/www/php/source/php-7.2.17/ext/pdo_dblib  
phpize  
./configure  --with-php-config=php-config  


make  
make install

Ubuntu18.04下使用PHP7.2的连接sql server数据库_SQL_03

Ubuntu18.04下源码编译php7.2扩展程序https://blog.csdn.net/ma_jian_ping/article/details/133077742?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22133077742%22%2C%22source%22%3A%22ma_jian_ping%22%7D

dblib不是mssql的100%全功能,不支持limit命令, 所以无法使用mssql的分页功能,但是这并不影响我们使用mssql的其它功能

五、可能遇到的问题

问题:在源码编译php扩展的时候遇到以下问题

Ubuntu18.04下使用PHP7.2的连接sql server数据库_php_04

Ubuntu18.04下使用PHP7.2的连接sql server数据库_SQL_05编辑

我们明明已经装了freetds啊,为啥找不到呢? 既然报错那我们就找报错的代码行,该报错位置在扩展目录下的config.m4文件,报错代码行如下图:

Ubuntu18.04下使用PHP7.2的连接sql server数据库_SQL_06

Ubuntu18.04下使用PHP7.2的连接sql server数据库_php_07编辑

这里有个php扩展源码的配置bug,在配置文件里面配置的freetds依赖路径有问题,所有找不到我们安装的freetds。

解决:修改config.m4文件,添加我们自己的freetds安装路径,如下图:

Ubuntu18.04下使用PHP7.2的连接sql server数据库_Server_08

Ubuntu18.04下使用PHP7.2的连接sql server数据库_Server_09编辑

修改过config.m4文件后,需要重新执行 phpize生成新的配置文件,再次编译顺利通过


标签:--,22%,SQL,PHP7.2,server,sql,freetds,php,安装
From: https://blog.51cto.com/u_16236290/7863859

相关文章

  • 2023_10_14_MYSQL_DAY_05_笔记
    2023_10_14_MYSQL_DAY_05_笔记https://www.cnblogs.com/tdskee/p/16536166.html{MySQL的优化多种方法(至少15条)}#查看触发器showtriggers;#删除触发器droptrigger触发器名;#建立触发器droptriggerifexistsdept_del;createtriggerdept_delafterdeleteon......
  • 2023_10_14_MYSQL_DAY_06_MYSQL优化的种类
    MYSQL优化的种类MYSQL的优化,是每一个程序员在做数据查询处理的时候,经常有的步骤那么SQL的优化有很多种,它可以是在硬件方面的,可以是在代码层面的,可以是在数据库方面的优化。下面就详细整理一下30种优化MYSQL的方案:1.在读表的时候,尽可能的避免全表扫描,合理的根据业务需求,在wher......
  • mysql报错:You must reset your password using ALTER USER statement before executin
    新安装mysql后,登录后,执行任何命令都会报错:YoumustresetyourpasswordusingALTERUSERstatementbeforeexecutingthisstatement.【解决办法】MySQL版本5.7.6版本以前用户可以使用如下命令:mysql>SETPASSWORD=PASSWORD('Admin2022!');MySQL版本5.7.6版本开始的用户可以使......
  • mysql进阶
    一存储引擎mysql存储引擎默认的是innoDB 1、innoDB 特点 2、myisam 3、memory 3个的区别主要看innodb 和myisam ......
  • 远端MySQL的总结
    目录远端MySQL的总结目前场景使用需求操作思路异常汇总本地navicat与远端MySQL修改远程授权登陆设置登录数据库命令修改host允许任何ip访问授权root用户进行远程登录启动本地Navicat连接navicat报错1045忘记数据库密码找到.ini修改.ini重启mysql进入MySQL客户端重设密码无my.......
  • 万户OA SendFileCheckTemplateEdit-SQL注入
    漏洞简介万户OA存在SendFileCheckTemplateEdit-SQL注入,该漏洞为前台漏洞漏洞复现fofa语法:app="万户ezOFFICE协同管理平台"登录页面如下:POC:/defaultroot/public/iWebOfficeSign/Template/SendFileCheckTemplateEdit.jsp?RecordID=1'%20UNION%20ALL%20SELECT%20sys.fn_sqlvar......
  • Mysql SELECT 语句执行过程
    整个SELECT语句查询流程1、客户端/服务端通信协议(Connectors)Mysql客户端/服务端通讯协议是半双工的,这就意味着在任意时刻只能有一端能发送数据,要么是客户端向服务端发送数据,要么是服务端向客户端发送数据,这两个动作不能同时进行,一旦一端开始发送数据,另外一端要完整......
  • MySQL解决查询语句1111 - Invalid use of group function错误
    是因为mysql查询语句的字段当中有聚合函数,where条件中不能用聚合函数的计算值作为查询条件,否则会出现:>1111-Invaliduseofgroupfunction错误。可以使用having解决。补充:这里主要要清楚where和having的作用以及区别:“WHERE” 是一个约束声明,在查询数据库的结果返回之前对......
  • Mysql 体系结构
    网上找的一张 Mysql逻辑架构图整个Mysql逻辑架构大致可以分为网络连接层、数据库服务层、存储引擎层、文件系统层一、网络连接层客户端连接器(MysqlConnectors)是Mysql官方为各种开发语言和平台提供的访问Mysql数据库的驱动程序,它实现了对应语言访问数据库的标准接......
  • 动态SQL
    1介绍什么是动态SQL:动态SQL指的是根据不同的查询条件,生成不同的Sql语句。官网描述:https://mybatis.org/mybatis-3/zh/dynamic-sql.htmlMyBatis的强大特性之一便是它的动态SQL。如果你有使用JDBC或其它类似框架的经验,你就能体会到根据不同条件拼接SQL语句的痛苦。例如拼......