php访问sql server 2000

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: Windows下PHP连接SQL Server 2000 可以用一个”容易”来形容。 1.打开php.ini, 找到下面这行 ;extension=php_mssql.dll 去掉前面的分号,变成 extension=php_mssql.dll 2.确认php.ini内extension_dir制定的目录里面有php_mssql.dll文件 3.重启web server 4.检查php_info() 确定有下面行: 5. Done Linux下完成同样的事情稍显复杂一些,毕竟SQL Server 是 MS的东东。

Windows下PHP连接SQL Server 2000 可以用一个”容易”来形容。

1.打开php.ini, 找到下面这行

;extension=php_mssql.dll

去掉前面的分号,变成

extension=php_mssql.dll

2.确认php.ini内extension_dir制定的目录里面有php_mssql.dll文件

3.重启web server

4.检查php_info() 确定有下面行:

5. Done

Linux下完成同样的事情稍显复杂一些,毕竟SQL Server 是 MS的东东。

1.需要额外安装一个叫“FreeTDS”的的开源软件,可以到http://www.freetds.org/下载最新版本,我下载时的最新版本为0.82, 文件名:freetds-stable.tgz, 该软件的官方说明是这样的:

FreeTDS is a set of libraries for Unix and Linux that allows your programs to natively talk to Microsoft SQL Server and Sybase databases.

2.解压安装命令:

tar zxvf freetds-stable.tgz

cd freetds-0.82

./configure –pre-fix=/usr/local/freetds –with-tdsver=7.0  //关于–with-tdsver,官方说明是: normally 5.0 for Sybase and 7.0 for Microsoft

make

make install

3. 测试freetds

用下面格式的命令:

/usr/local/freetds/bin/tsql -S servername -p port -U username -P password

测试看能否连接sql server

4.重新编译PHP, 我重新编译时,一般先php_info()看一下当前的编译条件,copy过来,再加上我需要添加的编译条件

./configure –你之前的编译条件 –with-mssql=/usr/local/freetds

5. 编译错误排除,我在编译的时候出现下面错误

configure: error: Directory /usr/local/freetds is not a FreeTDS installation directory

需要新建两个文件:
$ touch /usr/local/freetds/include/tds.h
$ touch /usr/local/freetds/lib/libtds.a

6. make & make install

7. 重启web server

PHP测试,用下面代码:
<?php
$msserver=your server;
$msuser=Your Username;
$mspass=Your Password;
$msdb=mssql_connect($msserver,$msuser,$mspass) or die(”Connect MSSQL Fail!”);
echo “Connect MSSQL Successful!”
?>


 

 

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

[yourserver]
    host = 192.168.0.X
    port = 1433
    tds Version = 8.0
    client charset = UTF-8

(client charset = UTF-8  因为freetds不支持GB2312字符集,要想正确显示中文只能使用UTF-8字符集。在这个配置文件中可以配置Windows域登陆或者SQLServer账号登陆两种方式 )

测试连接:/usr/local/freetds/bin/tsql -S yourserver -U XX -P XXXXXX

/usr/local/freetds/bin/tsql -H 192.168.0.X -p 1433 -U XX -P XXXXXX

 

 

所需软件:
Freetds目前最新的版本是0.82,在本文中使用的是0.62.3版的源码包。
主页地址为:http://www.freetds.org
下载地址为:http://ibiblio.org/pub/Linux/ALPHA/freetds/old/0.62/freetds-0.62.3.tar.gz
当然我们还要用到Apache和PHP,本文中二者的版本和下载地址如下:
Apache :最新版本为2.2.0,本文中使用的为2.2.0版本。
下载地址:http://apache.mirror.phpchina.com/httpd/httpd-2.2.0.tar.gz
PHP:最新版本为5.2.3本文中使用的是4.4.2
下载地址为:http://cn.php.net/get/php-4.4.2.tar.gz/from/this/mirror

现在我们开始安装,安装的顺序是Freetds,Apache,PHP。如果你还要使用Mysql哪你需要在PHP之前安装。具体安装如下:

1、Freetds的安装
[root@test]# tar –zxvf freetds-0.62.3.tar.gz
[root@test]# cd freetds-0.62.3
[root@test]# ./configure \
>--prefix=/usr/local/freetds \    
>--with-tdsver=8.0 \       
>--enable-msdblib          {设定freetds支持Msdblib,好像可以不用}
[root@test]# make
[root@test]# make install

关于上面configure,--prefix=/usr/local/freetds是指安装到/usr/local/freetds这个目录中,--with-tdsver=8.0是指安装tds 8.0版本(指定freetds运行版本为8.0支持Ms SQL Server 2000,我没有加这个编译参数,结果按照默认编译为5.0。5.0连接数据库的端口是4000,不是SQLServer的1433,详细版本对应请访问http://www.freetds.org/tds.html)

2、Apache的安装
[root@test] # cd httpd-2.2.0
[root@test] # ./configure \
>--enable-so \                 {让Apache支持模块动态加载}
>--enable-ssl=share \            {让Apache支持ssl }
>--enable-rewrite=share \         {让Apache支持URL重写 }
>--enable-track-vars \            { 启动cookie的get/post等追踪功能}
>--prifix=/usr/local/apache2 \      {指定Apache的安装目录为/usr/local/apache2}
[root@test] # make
[root@test] # make install
[root@test] # /usr/local/apache2/bin/apachectl start

在浏览器中地址中输入http://ApacheIP/ 如果看到It works! 证明Apache安装成功。

3、Php的安装
[root@test] # tar –zxvf php-4.4.2.tar.gz
[root@test] # cd php-4.4.2
[root@test] # ./configure \
>--prefix=/usr/local/php \               {指定PHP的安装目录为/usr/local/php}
>--with-mssql=/usr/local/freetds \        {设定PHP支持MSSQL的安装目录}
>--with-apxs2=/usr/local/apache2/bin/apxs \
>--with-config-file-path=/usr/local/php/etc \
>--enable-track-vars \
>--enable-force-cgi-redirect \
>--with-mhash                         {支持哈希算法,诸如MD5等}
[root@test] # make
[root@test] # make install
[root@test] # cp php.ini-dist /usr/local/php/etc/php.ini

若已经安装过php请重新编译php并配置php.ini文件
找到 ;extension=mssql80.so
将注释;去掉成
extension=mssql80.so

4、Freetds配置
[root@test] # cd /usr/local/freetds/etc
[root@test] # vi freetds.conf


;[myServer2K]
;   host = ntmachin.domain.com
;   port = 1433
;   tds Version = 8.0
去掉分号改为
[192.168.1.110]
host = 192.168.1.110     {192.168.1.9为MS SQL Server数据库的IP地址,当然域名也可以,这里方括号中的要与host后面的必须一样}
port = 1433
tds Version = 8.0
client charset = UTF-8

(client charset = UTF-8  因为freetds不支持GB2312字符集,要想正确显示中文只能使用UTF-8字符集。在这个配置文件中可以配置Windows域登陆或者SQLServer账号登陆两种方式 )


5、Apache配置
[root@test] # cd /usr/local/apache2/conf
[root@test] # vi httpd.conf
找到“LoadModule php4_module  modules/libphp4.so”一行,在下面添加
“AddDefaultCharset UTF-8”  
(因为freetds不支持GB2312字符集,要想正确显示中文只能使用UTF-8字符集。)
(如果没有找到这一行请检查/usr/local/apache2/modules下是否有libphp4.so文件,如果有请手动添加,如果没有请重新编译安装PHP。)

找到“”项,在“AddType application/x-gzip .gz .tgz”一行下面添加:“AddType application/x-httpd-php .php”。

6、PHP配置
[root@test] # cd /usr/local/php/etc
[root@test] # vi php.ini
找到“;default_charset = "iso-8859-1"”一行,去掉分号改为default_charset = "UTF-8",保存退出。
(因为freetds不支持GB2312字符集,要想正确显示中文只能使用UTF-8字符集。)
7、Freetds运行测试
freetds安装配置完成后,运行/usr/local/freetds/bin/tsql –S 192.168.1.9 –U sa 后显示:
locale is "zh_CN.GB2312"
locale charset is "GB2312"
Password:
输入密码后显示
1>
哈,你已经连接上MS SQL Server数据库了。

8、Apache运行测试
[root@test] # cd /usr/local/apache/bin/apachectl start

如果没有提示任何错误,应该是正常运行了。如果你还没有配置完PHP,在浏览器的地址栏里输入http://服务器IP地址,会显示It’s Works!。如果你配置了PHP,输入http://服务器IP地址/测试php文件名称,就应该会显示你所希望看到的内容。

9、PHP运行测试
启动Apache,编写一个文件test.php,内容为<?php phpinfo() ?>,传到Apache的文档目录下,在浏览器的地址栏里输入http://服务器IP/test.php.

这时你应该能够看到Apache和PHP的配置信息,同时你还能看到PHP支持mssql的信息,显示如下:

 

10、PHP连接MS SQL Server测试
编写如下代码:
<?php
$msdb=mssql_connect(“sql Ip”,”sq”,”youpass”);
if ($msdb) {
echo "conncet ms sql server succed!";
}
else {
  echo "connect ms sql server error!";
}
?>

如果显示成功,那你当然是连接成功了,如果在访问数据表时,显示的是乱码,那一定是字符集的问题,看看那里没有设置正确,最稳妥的办法是将每一个网页的charset都设置成UTF-8。

如果出现不能连接,请在freetds配置文件中找到;dump file = /tmp/freetds.log这一行,注释掉前面的分号,再执行一下测试脚本,察看/tmp/freetds.log文件,它可以告诉你很多出错的信息帮助你排除问题。
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
5月前
|
缓存 NoSQL 网络安全
【Azure Redis 缓存】Azure Redis服务开启了SSL(6380端口), PHP如何访问缓存呢?
【Azure Redis 缓存】Azure Redis服务开启了SSL(6380端口), PHP如何访问缓存呢?
|
14天前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
44 11
|
2月前
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
63 4
|
2月前
|
SQL PHP 数据库
20 PHP如何捕获sql错误
路老师带你深入学习PHP,掌握技术干货。本文介绍了PDO中捕获SQL错误的三种模式:默认模式、警告模式和异常模式,以及如何使用errorCode()和errorInfo()方法进行错误处理。
63 5
|
3月前
|
SQL 关系型数据库 BI
使用 Webshell 访问 SQL Server 主机并利用 SSRS
使用 Webshell 访问 SQL Server 主机并利用 SSRS
|
3月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP开发领域,设计模式是解决常见问题的高效方案集合。它们不是具体的代码,而是一种编码和设计经验的总结。单例模式作为设计模式中的一种,确保了一个类仅有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的基本概念、实现方式及其在PHP中的应用。
单例模式在PHP中的应用广泛,尤其在处理数据库连接、日志记录等场景时,能显著提高资源利用率和执行效率。本文从单例模式的定义出发,详细解释了其在PHP中的不同实现方法,并探讨了使用单例模式的优势与注意事项。通过对示例代码的分析,读者将能够理解如何在PHP项目中有效应用单例模式。
|
4月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
57 2
|
5月前
|
SQL 安全 API
PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计
PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计
115 4
|
5月前
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
|
5月前
|
SQL 机器学习/深度学习 开发工具
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)