在Linux环境下,PHP要连接到Microsoft SQL Server(MSSQL),由于PHP本身并不直接支持,因此需要借助第三方软件freetds来实现。本教程将详细阐述如何在Linux系统上为PHP添加MSSQL模块,使其能够顺利连接到SQL Server。
你需要安装freetds,这是一个开放源代码的库,允许Linux与MS SQL Server通信。以下是安装freetds的步骤:
1. **下载freetds**:
使用wget命令从官方镜像站点下载freetds的源代码包,例如:
```
wget http://mirrors.xmu.edu.cn/ubuntu/archive/pool/main/f/freetds/freetds_0.82.orig.tar.gz
```
2. **解压并进入目录**:
```
tar zxf freetds_0.82.orig.tar.gz
cd freetds_0.82
```
3. **配置并编译freetds**:
运行以下命令以配置freetds,并指定TDS版本和其他参数:
```
./configure --prefix=/usr/local/freetds --with-tdsver=8.0 -–enable-msdblib -–enable-dbmfix -–with-gnu-ld -–enable-shared -–enable-static
make
make install
```
接下来,你需要编译PHP的MSSQL模块:
1. **进入PHP源码目录**:
如果你已经安装了PHP源码,可以通过`cd /path/to/php/source`进入。
2. **进入MSSQL模块源码目录**:
`cd ext/mssql`
3. **生成编译配置文件**:
```
/usr/local/webserver/php/bin/phpize
```
4. **配置并编译MSSQL模块**:
使用以下命令配置并编译模块,确保指定正确的freetds路径:
```
./configure –with-php-config=/usr/local/webserver/php/bin/php-config –with-mssql=/usr/local/freetds
make
make install
```
5. **修改php.ini**:
将编译生成的mssql.so模块添加到php.ini文件中,例如:
```
extension="/path/to/extension/mssql.so"
```
然后,配置freetds以连接到你的SQL Server:
1. **编辑freetds配置文件**:
```
cd /usr/local/freetds/etc
vi freetds.conf
```
2. **在配置文件中添加服务器信息**:
添加一个新的节,例如[Server2005],包含SQL Server的IP地址、端口和TDS版本,例如:
```
[Server2005]
host = 192.168.x.x
port = 1433
tds version = 7.2
client charset = UTF-8
```
测试PHP连接到MSSQL的能力:
创建一个PHP文件,如`test_mssql.php`,并使用PDO类尝试连接到数据库:
```php
<?php
try {
$hostname='218.x.x.x'; // 注意,这里要使用IP地址或主机名
$port=1433; // 端口
$dbname="user"; // 库名
$username="database"; // 用户
$pw="passwd"; // 密码
$dbh = new PDO("dblib:host=$hostname:$port;dbname=$dbname", "$username", "$pw");
} catch (PDOException $e) {
echo "Failed to get DB handle: " . $e->getMessage() . "\n";
exit;
}
echo 'connent MSSQL succeed';
$stmt=$dbh->prepare("SELECT * FROM z_2010pinjiu_user");
$stmt->execute();
while ($row=$stmt->fetch()) {
print_r($row);
}
unset($dbh);
unset($stmt);
?>
```
运行这个PHP脚本,如果一切正常,你应该能看到从MSSQL数据库中获取的数据。
通过以上步骤,你已成功在Linux上的PHP环境中配置了MSSQL模块,现在可以愉快地在Linux系统上进行SQL Server数据库的开发工作了。记住,确保所有配置文件中的IP地址、端口、数据库名、用户名和密码都与实际环境匹配,以确保连接成功。