热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux(Fedora)下freetds编译安装及编译php的mssql扩展

一.freetds编译前言:编译安装php的mssql扩展时,提示CannotfindFreeTDSinknowninstallationdirectories,configuration无法成功,于是,开始折腾编译安装freetds。附:FreeTDS是一组帮我们在Unix/Linux系统中连接SQLServer或Sybase数据库的开源librar

.freetds编译

前言:编译安装phpmssql扩展时,提示Cannot find FreeTDS in known installation directoriesconfiguration无法成功,于是,开始折腾编译安装freetds

附:

FreeTDS是一组帮我们在Unix/Linux系统中连接SQLServerSybase数据库的开源librarySQLServerSybase同用TDS(Tabular Data Stream) 协议,所以这个开源的FreeTDS才可以同时支持它们。微软官方没有支持Unix/Linux的客户端及驱动,所以FreeTDS通常被用作很底层的驱动。

1.下载freetds的源码包ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz

2.解压freetds并进入解压后的freetds包目录

3.执行如下命令安装:

  $ ./configuration --with-tdsver=8.0 --prefix=/usr/local/freetds --enable-msdblib

  $ make

  $ make install

  参数意义如下:

  --prefix:指定freetds的安装目录

  --with-tdsver:设置tds版本

  --enable-msdblib:为是否允许Microsoft数据库函数

  三个参数都不是必须的,但最好指定--prefix,--with-tdsver这两个参数

  如果不指定--with-tdsver的话连接mssql时可能会连接失败,具体情况如下:

  1.用tsql连接时,如果tsql参数或者freetds.conf里的servername没有指定tdsver时,会导致连接失败,如果编译时指定了--with-tdsver则无论tsql是否指定

    tdsver都能连接成功

 2.通过PHP扩展mssql.so连接时,无论编译时是否加--with-tdsver,都需要在freetds.conf里的servername里指定tdsver,否则无论如何都无法连接成功

4.配置数据库连接

1.配置文件在:/usr/local/freetds/etc/freetds.conf

2.配置数据库连接

[servername]

 host = 192.168.1.xxx  port = 1433  tds version = 8.0  client charset = UTF-8 

servername自定义服务器名,在连接数据库或者配置 ODBC数据源的时候需要通过它来引用。

port1433 一般不需要修改。

clientcharset 指定为 UTF-8,不会影响SQL Server 数据库服务器的存储编码。

测试是freetds是否连上mssql:http://blog.csdn.net/aidenliu/article/details/6664382

可以用tsql -C 查看freetds的信息

二 .phpmssql扩展安装

 1.下载mssql的源码包,一般php的源码包的ext目录下都有

  2. 解压并进入源码所在文件夹

  3. /usr/bin/phpize(根据phpize所以路径指定)

  4. ./configuration

      我编译的时候,这里一直报.Cannotfind FreeTDS in known installation directories

      折腾很久以后,发现这句错误信息是写在config.m4这个文件里的,而且报错的原因是因

     为找不到sybdb.h这个文件,config.m4代码如下

   iftest "$PHP_MSSQL" = "yes"; then

   for i in /usr/local /usr /usr/local/freetds;do

      iftest -f $i/include/sybdb.h; then

        FREETDS_INSTALLATION_DIR=$i

         FREETDS_INCLUDE_DIR=$i/include

           break

              eliftest -f $i/include/freetds/sybdb.h; then

             FREETDS_INSTALLATION_DIR=$i

             FREETDS_INCLUDE_DIR=$i/include/freetds

               break

         fi

done

iftest -z "$FREETDS_INSTALLATION_DIR"; then

AC_MSG_ERROR(Cannotfind FreeTDS in known installation directories)

fi

其中红色字体是我根据自己freetds编译路径自己加的,特别注意的是,更改了config.m4文件后需要重新执行phpize

加了这一句后,./configuration成功

然后make&makeinstall 很顺利

  1. /etc/php.d下新建mssql.ini并加入extention=mssql.so

  2. 重启apache..然后PHPINFO.一切OK

  3. 5,6 step 可能需要根据具体PHP版本处理extention的方式有不同处理

推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
author-avatar
人心城府深我如z何故做清纯
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有