技术标签: freetds 运维 php mssql centos
前两天写了一篇文章 OSX MAMP 如何为 PHP 5.6 安装 MSSQL 扩展,讲的是自己的个人电脑,也就是开发环境如何为 PHP 5.6
安装 MSSQL
扩展,现在要上生产了,继续讲讲怎么给 CentOS7
安装 PHP - MSSQL
扩展。
操作系统
集成环境
和之前一样,我们先来整理一下整体的步骤:
1、安装 freetds
2、安装 mssql.so
扩展(php
的 mssql
扩展依赖于 freetds
)
整体来讲和 OSX
安装扩展的步骤是一样的。
freetds
依次执行以下脚本:
cd /usr/local/src/
wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-patched.tar.gz
tar -zxvf freetds-patched.tar.gz
即,进入 /usr/local/src
目录(我一般习惯把编译用到的源代码放在这里),下载 freetds
的源码,然后解压。
freetds
依次执行以下脚本:
cd freetds-1.2/
./configure --prefix=/usr/local/freetds --with-tdsver=7.4 --enable-msdblib
make && make install
注意上面的 freetds-1.2
,根据你自己下载的不同 freetds
版本,这里可能会有所不同,反正就是进入你解压出来得到的文件夹。然后 --with-tdsver=7.4
这里,根据 SqlServer
的不同版本灵活选择,具体可以参考下图自行选择,我使用的是 SqlServer 2012
,所以选择的 7.4
版本:
以上版本选择的内容来自
freetds
的官方文档,文档地址:https://www.freetds.org/userguide/ChoosingTdsProtocol.html
freetds
依次执行以下命令来初始化 freetds
配置:
echo "/usr/local/freetds/lib/" > /etc/ld.so.conf.d/freetds.conf
ldconfig
其他的配置不需要,网上有一些教程写要在 freetds.conf
中配置 MSSQL
的连接信息。其实大可不必,在调用的时候配置就可以了,也就是在 PHP
代码中配置,这样多灵活。
freetds
执行以下命令来查看 freetds
版本:
# /usr/local/freetds/bin/tsql -C
Compile-time settings (established with the "configure" script)
Version: freetds v1.2
freetds.conf directory: /usr/local/freetds/etc
MS db-lib source compatibility: yes
Sybase binary compatibility: no
Thread safety: yes
iconv library: yes
TDS version: 7.4
iODBC: no
unixodbc: no
SSPI "trusted" logins: no
Kerberos: no
OpenSSL: yes
GnuTLS: no
MARS: yes
执行以下命令来测试 freetds
连接:
# /usr/local/freetds/bin/tsql -H example.com -p 1433 -U username -P password
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1> select @@version
2> go
Microsoft SQL Server 2012 - 11.0.2100.60 (X64)
Feb 10 2012 19:39:15
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
(1 row affected)
其中 example.com
是 MSSQL
的 host
地址, username
和 password
分别是 MSSQL
的用户名和密码。
PHP-5.6.40
源码依次执行以下脚本:
cd /usr/local/src/
wget https://www.php.net/distributions/php-5.6.40.tar.gz
tar -zxvf php-5.6.40.tar.gz
和上面下载 freetds
一样,这里不再赘述。
PHP-5.6.40-MSSQL
扩展依次执行以下脚本:
cd php-5.6.40/ext/mssql/
/www/server/php/56/bin/phpize
./configure --with-php-config=/www/server/php/56/bin/php-config --with-mssql=/usr/local/freetds/
make && make install
上面的 /www/server/php/56/bin/
路径,因为的在宝塔中使用的 php
的安装路径是这个,所以路径就写成这样,大家根据自己情况调整。
得到类似如下的输出,说明扩展安装完成了:
...
Build complete.
Don't forget to run 'make test'.
Installing shared extensions: /www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/
php.ini
这里在哪里修改大家就随意了,我就直接用宝塔前端修改了,没用命令行。在 php.ini
中添加如下几行:
[mssql]
extension=mssql.so
修改完成之后保存,然后重启 php
服务。
查看 phpinfo
,可以看到 mssql
扩展已经启用了。
大功告成。
最近几天没少折腾环境,之前还试过在 Windows Server
如何安装 php
的 mssql
扩展,后来因为 php
的版本原因放弃了。
其实官方早在 2018年12月31日
就已经结束了对 php-5.6
的支持,而微软官方也提供了更好用的 PHP-Sqlsrv
扩展来让 php
使用 mssql
(*nix
系统要求 php
版本 7+
),我这边由于特殊原因不方便切换 php
版本,最后只能选择了 freetds
+ php-5.6
的环境来实现。
如果大家有条件的话,推荐还是使用 PHP7+
比较好,官方的支持也更好一点。
我这里把解决问题的过程和思路记录在这里,一个是帮助自己整理一下最近的工作内容,再有一个也是方便后来人因为特殊原因接触到这些 上古环境
,也算是给大家一个参考吧。
最近几天,前前后后,开发测试生产,Linux
,osx
,windows
,windows server
,php-mssql
扩展安装了不下 10 次,想想觉得自己挺牛的。
话说 CSDN 竟然支持表情符号,有点厉害。
关于文中提到的两个资源,freetds
源码和 php-5.6.40
源码,由于特殊原因,可能在国内下载的速度会比较慢, 也可能无法正常下载,我这里提供两个已经下载好的文件,有需要的同学可以自行拿取。
文章浏览阅读331次。第一部分:准备工作1 安装虚拟机2 安装centos73 安装JDK以上三步是准备工作,至此已经完成一台已安装JDK的主机第二部分:准备3台虚拟机以下所有工作最好都在root权限下操作1 克隆上面已经有一台虚拟机了,现在对master进行克隆,克隆出另外2台子机;1.1 进行克隆21.2 下一步1.3 下一步1.4 下一步1.5 根据子机需要,命名和安装路径1.6 ..._创建一个hadoop项目
文章浏览阅读1.7k次。心脏滴血漏洞HeartBleed CVE-2014-0160 是由heartbeat功能引入的,本文从深入码层面的分析该漏洞产生的原因_heartbleed代码分析
文章浏览阅读1.4k次。前言ofd是国家文档标准,其对标的文档格式是pdf。ofd文档是容器格式文件,ofd其实就是压缩包。将ofd文件后缀改为.zip,解压后可看到文件包含的内容。ofd文件分析工具下载:点我下载。ofd文件解压后,可以看到如下内容: 对于xml文件,可以用文本工具查看。但是对于印章文件(Seal.esl)、签名文件(SignedValue.dat)就无法查看其内容了。本人开发一款ofd内容查看器,..._signedvalue.dat
文章浏览阅读1.8w次,点赞29次,收藏313次。整体系统设计本设计主要是对ADC和DAC的使用,主要实现功能流程为:首先通过串口向FPGA发送控制信号,控制DAC芯片tlv5618进行DA装换,转换的数据存在ROM中,转换开始时读取ROM中数据进行读取转换。其次用按键控制adc128s052进行模数转换100次,模数转换数据存储到FIFO中,再从FIFO中读取数据通过串口输出显示在pc上。其整体系统框图如下:图1:FPGA数据采集系统框图从图中可以看出,该系统主要包括9个模块:串口接收模块、按键消抖模块、按键控制模块、ROM模块、D.._基于fpga的信息采集
文章浏览阅读2.5w次。1.背景错误信息:-- [http-nio-9904-exec-5] o.s.c.n.z.filters.post.SendErrorFilter : Error during filteringcom.netflix.zuul.exception.ZuulException: Forwarding error at org.springframework.cloud..._com.netflix.zuul.exception.zuulexception
文章浏览阅读358次。1.介绍图的相关概念 图是由顶点的有穷非空集和一个描述顶点之间关系-边(或者弧)的集合组成。通常,图中的数据元素被称为顶点,顶点间的关系用边表示,图通常用字母G表示,图的顶点通常用字母V表示,所以图可以定义为: G=(V,E)其中,V(G)是图中顶点的有穷非空集合,E(G)是V(G)中顶点的边的有穷集合1.1 无向图:图中任意两个顶点构成的边是没有方向的1.2 有向图:图中..._给定一个邻接矩阵未必能够造出一个图
文章浏览阅读321次。(十二)、WDS服务器安装通过前面的测试我们会发现,每次安装的时候需要加域光盘映像,这是一个比较麻烦的事情,试想一个上万个的公司,你天天带着一个光盘与光驱去给别人装系统,这将是一个多么痛苦的事情啊,有什么方法可以解决这个问题了?答案是肯定的,下面我们就来简单说一下。WDS服务器,它是Windows自带的一个免费的基于系统本身角色的一个功能,它主要提供一种简单、安全的通过网络快速、远程将Window..._doc server2012上通过wds+mdt无人值守部署win11系统.doc
文章浏览阅读219次。python–xlrd/xlwt/xlutilsxlrd只能读取,不能改,支持 xlsx和xls 格式xlwt只能改,不能读xlwt只能保存为.xls格式xlutils能将xlrd.Book转为xlwt.Workbook,从而得以在现有xls的基础上修改数据,并创建一个新的xls,实现修改xlrd打开文件import xlrdexcel=xlrd.open_workbook('E:/test.xlsx') 返回值为xlrd.book.Book对象,不能修改获取sheett_xlutils模块可以读xlsx吗
文章浏览阅读8.2w次,点赞267次,收藏656次。运行Selenium出现'WebDriver' object has no attribute 'find_element_by_id'或AttributeError: 'WebDriver' object has no attribute 'find_element_by_xpath'等定位元素代码错误,是因为selenium更新到了新的版本,以前的一些语法经过改动。..............._unresolved attribute reference 'find_element_by_id' for class 'webdriver
文章浏览阅读198次。一:模态窗口//父页面JSwindow.showModalDialog(ifrmehref, window, 'dialogWidth:550px;dialogHeight:150px;help:no;resizable:no;status:no');//子页面获取父页面DOM对象//window.showModalDialog的DOM对象var v=parentWin..._jquery获取父window下的dom对象
文章浏览阅读1.7w次,点赞15次,收藏129次。算法(algorithm)是解决一系列问题的清晰指令,也就是,能对一定规范的输入,在有限的时间内获得所要求的输出。 简单来说,算法就是解决一个问题的具体方法和步骤。算法是程序的灵 魂。二、算法的特征1.可行性 算法中执行的任何计算步骤都可以分解为基本可执行的操作步,即每个计算步都可以在有限时间里完成(也称之为有效性) 算法的每一步都要有确切的意义,不能有二义性。例如“增加x的值”,并没有说增加多少,计算机就无法执行明确的运算。 _算法
文章浏览阅读1.5k次,点赞18次,收藏26次。网络安全的标准和规范是网络安全领域的重要组成部分。它们为网络安全提供了技术依据,规定了网络安全的技术要求和操作方式,帮助我们构建安全的网络环境。下面,我们将详细介绍一些主要的网络安全标准和规范,以及它们在实际操作中的应用。_网络安全标准规范