Linux下PHP连接Microsoft SQL Server 2000 Freetds-0.62.3 Apache-2.2.0 PHP-4.4.2

 

http://blog.chinaunix.net/uid-450400-id-2119008.html

Linux是一个很不错的服务器操作系统,PHP也是一个功能强大的开发工具,MS SQL Server 2000也是一个顶不错的数据库系统,很容易上手和管理。可是就是不能放在一起用,苦恼啊!

经过几天在网上游逛,终于让我找到一个不错的软件可以让上面这三个系统放在一起使用,这就是Freetds。其实Freetds早就有了,就是为了能够让linux能够访问SybaseMS SQL Server的。我在这也就借花献佛啦。

Freetds目前最新的版本是0.64,在本文中使用的是0.62.3版的源码包。

主页地址为:http://www.freetds.org

下载地址为:http://ibiblio.org/pub/Linux/ALPHA/freetds/old/0.62/freetds-0.62.3.tar.gz

 

当然我们还要用到ApachePHP,本文中二者的版本和下载地址如下:

Apache 最新版本为2.2.0,本文中使用的为2.2.0版本。

下载地址:.http://apache.justdn.org/httpd/httpd-2.2.0.tar.gz

PHP:最新版本为5.1.2本文中使用的是4.4.2

下载地址为:http://cn.php.net/get/php-4.4.2.tar.gz/from/this/mirror

 

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

1Freetds的安装

[root@red]# tar –zxvf freetds-0.62.3.tar.gz

[root@red]# cd freetds-0.62.3

[root@red]# ./configure \

>--prefix=/usr/local/freetds \     {指定freetds的安装目录为/usr/local/freetds}

>--with-tdsver=8.0 \        {指定freetds运行版本为8.0支持Ms SQL Server 2000}

>--enable-msdblib          {设定freetds支持Msdblib,好像可以不用}

[root@red]# make

[root@red]# make install

 

port = 1433

tds Version = 8.0

client charset = UTF-8  {因为freetds不支持GB2312字符集,要想正确显示中文只能使用UTF-8字符集。}

 

2Apache的安装

[root@red] # cd httpd-2.2.0

[root@red] # ./configure \

>--enable-so \                 {Apache支持模块动态加载}

>--enable-ssl=share \            {Apache支持ssl }

>--enable-rewrite=share \         {Apache支持URL重写 }

>--enable-track-vars \            { 启动cookieget/post等追踪功能}

>--prifix=/usr/local/apache2 \      {指定Apache的安装目录为/usr/local/apache2}

[root@red] # make

[root@red] # make install

[root@red] # /usr/local/apache2/bin/apachectl start

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

3Php的安装

[root@red] # tar –zxvf php-4.4.2.tar.gz

[root@red] # cd php-4.4.2

[root@red] # ./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@red] # make

[root@red] # make install

[root@red] # cp php.ini-dist /usr/local/php/etc/php.ini

 

4Freetds配置

[root@red] # cd /usr/local/freetds/etc

[root@red] # vi freetds.conf

;[myServer2K]

;   host = ntmachin.domain.com

;   port = 1433

;   tds Version = 8.0

去掉分号改为

[192.168.1.9]

host = 192.168.1.9     {192.168.1.9MS SQL Server数据库的IP地址,当然域名也可以,这里方括号中的要与host后面的必须一样}

 port = 1433

 tds Version = 8.0

 client charset = UTF-8

5Apache配置

[root@red] # cd /usr/local/apache2/conf

[root@red] # vi httpd.conf

找到“LoadModule php4_module  modules/libphp4.so”一行,在下面添加

AddDefaultCharset UTF-8  

(因为freetds不支持GB2312字符集,要想正确显示中文只能使用UTF-8字符集。)

(如果没有找到这一行请检查/usr/local/apache2/modules下是否有libphp4.so文件,如果有请手动添加,如果没有请重新编译安装PHP。)

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

 

6PHP配置

[root@red] # cd /usr/local/php/etc

[root@red] # vi php.in

找到“;default_charset = "iso-8859-1"”一行,去掉分号改为default_charset = "UTF-8",保存退出。

(因为freetds不支持GB2312字符集,要想正确显示中文只能使用UTF-8字符集。)

7Freetds运行测试

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数据库了。

8Apache运行测试

[root@red] # cd /usr/local/apache/bin/apachectl start

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

9PHP运行测试

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

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

mssql

MSSQL Support

enabled

Active Persistent Links

0

Active Links

0

Library version

7.0

 

Directive

Local Value

Master Value

mssql.allow_persistent

On

On

mssql.batchsize

0

0

mssql.compatability_mode

Off

Off

mssql.connect_timeout

5

5

mssql.datetimeconvert

On

On

mssql.max_links

Unlimited

Unlimited

mssql.max_persistent

Unlimited

Unlimited

mssql.max_procs

Unlimited

Unlimited

mssql.min_error_severity

10

10

mssql.min_message_severity

10

10

mssql.secure_connection

Off

Off

mssql.textlimit

Server default

Server default

mssql.textsize

Server default

Server default

mssql.timeout

60

60

 

10PHP连接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

 

 

Jming

2006-4-20

 

posted @ 2017-06-13 14:35  sky20080101  阅读(262)  评论(0编辑  收藏  举报