温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Linux下如何使用php访问sql server

发布时间:2022-01-26 11:20:01 来源:亿速云 阅读:206 作者:小新 栏目:开发技术
# 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 

二、安装ODBC驱动

Microsoft官方提供了Linux版的ODBC驱动,这是连接SQL Server的关键组件。

2.1 添加微软仓库

# 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 

2.2 安装驱动

# 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 

2.3 验证安装

odbcinst -q -d -n "ODBC Driver 17 for SQL Server" 

三、编译安装PHP的SQLSRV扩展

3.1 下载扩展包

从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 

3.2 配置PHP.ini

php.ini中添加:

extension=sqlsrv.so extension=pdo_sqlsrv.so 

验证加载:

php -m | grep sqlsrv 

四、连接测试

4.1 基本连接示例

<?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 "连接成功!"; } ?> 

4.2 PDO连接方式

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()); } 

五、常见问题解决

5.1 连接超时

在连接字符串中添加超时参数:

"LoginTimeout" => 30 

5.2 SSL加密问题

现代SQL Server默认要求加密连接,可在连接选项中禁用(不推荐):

"Encrypt" => false 

或正确配置证书:

sudo curl -o /etc/ssl/certs/microsoft.cer \ https://curl.haxx.se/ca/cacert.pem 

5.3 中文乱码

指定字符集:

"CharacterSet" => "UTF-8" 

六、性能优化建议

  1. 使用连接池:通过sqlsrv_connectConnectionPooling选项启用
  2. 预处理语句:始终使用参数化查询
  3. 批处理操作:对于大量数据操作使用批量插入

示例批处理:

$params = [ [$_POST['name'], $_POST['price']] ]; $stmt = sqlsrv_prepare( $conn, "INSERT INTO Products (Name, Price) VALUES (?, ?)", $params ); if (sqlsrv_execute($stmt) === false) { // 错误处理 } 

七、安全注意事项

  1. 永远不要在代码中硬编码凭据
  2. 使用最小权限原则创建数据库用户
  3. 启用SQL Server的审计日志
  4. 定期更新ODBC驱动和PHP扩展

推荐使用环境变量存储密码:

getenv('DB_PASSWORD') 

结语

通过本文的步骤,您已经成功在Linux系统上配置了PHP与SQL Server的连接。这种跨平台方案不仅扩展了PHP的应用场景,还能有效利用SQL Server在企业环境中的优势。当遇到问题时,建议查阅:

在实际生产环境中,建议进行充分的测试和性能评估,确保系统稳定可靠。 “`

注:本文实际约1500字,可根据需要调整具体章节的详细程度。代码块中的服务器地址、用户名密码等需要替换为实际值。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI