您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Linux下如何使用PHP访问SQL Server
## 前言
在企业级应用开发中,经常需要跨平台访问不同类型的数据库。虽然PHP与MySQL的组合更为常见,但在某些场景下(如对接企业现有SQL Server数据库时),我们需要在Linux环境下通过PHP连接SQL Server。本文将详细介绍在Linux系统中配置PHP与SQL Server通信的完整流程。
---
## 一、环境准备
### 1.1 系统要求
- Linux发行版(Ubuntu/CentOS等)
- PHP 7.0+(推荐7.4或8.0+)
- SQL Server 2008+(建议2016以上版本)
### 1.2 安装必要组件
```bash
# Ubuntu/Debian
sudo apt-get install -y php php-dev unixodbc-dev
# CentOS/RHEL
sudo yum install -y php php-devel unixODBC-devel
Microsoft官方提供了Linux版的ODBC驱动,这是连接SQL Server的关键组件。
# Ubuntu 20.04
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo curl -o /etc/apt/sources.list.d/mssql-release.list \
https://packages.microsoft.com/config/ubuntu/20.04/prod.list
# CentOS 7
sudo curl -o /etc/yum.repos.d/mssql-release.repo \
https://packages.microsoft.com/config/rhel/7/prod.repo
# Ubuntu
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17 mssql-tools
# CentOS
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel
sudo ACCEPT_EULA=Y yum install -y msodbcsql17 mssql-tools
odbcinst -q -d -n "ODBC Driver 17 for SQL Server"
从PECL获取最新版:
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
或手动下载:
wget https://pecl.php.net/get/sqlsrv-5.10.1.tgz
tar -xzvf sqlsrv-5.10.1.tgz
cd sqlsrv-5.10.1/
phpize
./configure
make
sudo make install
在php.ini
中添加:
extension=sqlsrv.so
extension=pdo_sqlsrv.so
验证加载:
php -m | grep sqlsrv
<?php
$serverName = "your_server_ip,1433";
$connectionOptions = [
"Database" => "your_database",
"Uid" => "sa",
"PWD" => "your_password"
];
$conn = sqlsrv_connect($serverName, $connectionOptions);
if ($conn === false) {
die(print_r(sqlsrv_errors(), true));
} else {
echo "连接成功!";
}
?>
try {
$conn = new PDO(
"sqlsrv:Server=your_server_ip,1433;Database=your_db",
"sa",
"your_password"
);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("连接失败: " . $e->getMessage());
}
在连接字符串中添加超时参数:
"LoginTimeout" => 30
现代SQL Server默认要求加密连接,可在连接选项中禁用(不推荐):
"Encrypt" => false
或正确配置证书:
sudo curl -o /etc/ssl/certs/microsoft.cer \
https://curl.haxx.se/ca/cacert.pem
指定字符集:
"CharacterSet" => "UTF-8"
sqlsrv_connect
的ConnectionPooling
选项启用示例批处理:
$params = [ [$_POST['name'], $_POST['price']] ];
$stmt = sqlsrv_prepare(
$conn,
"INSERT INTO Products (Name, Price) VALUES (?, ?)",
$params
);
if (sqlsrv_execute($stmt) === false) {
// 错误处理
}
推荐使用环境变量存储密码:
getenv('DB_PASSWORD')
通过本文的步骤,您已经成功在Linux系统上配置了PHP与SQL Server的连接。这种跨平台方案不仅扩展了PHP的应用场景,还能有效利用SQL Server在企业环境中的优势。当遇到问题时,建议查阅:
在实际生产环境中,建议进行充分的测试和性能评估,确保系统稳定可靠。 “`
注:本文实际约1500字,可根据需要调整具体章节的详细程度。代码块中的服务器地址、用户名密码等需要替换为实际值。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。