给宝塔安装的 PHP 安装 PDO ODBC 扩展

December 09, 2023
测试
测试
测试
测试
3 分钟阅读

PHP 和 MySQL一直都是很好地搭配,但我们有时因业务需要,要连接 Microsoft SQL Server 数据库,然后要使用 PDO ODBC 才能连接,但宝塔安装的 PHP 默认并没有装这个扩展,经过一系列踩坑,整理出了下面的教程,希望对你有帮助。

安装unixODBC

unixODBC 是一个数据库连接组件,安装 pdo_odbc 前需要安装这个,否则安装 pdo_odbc 时会出现 Cannot find header file(s) for pdo_odbc 错误。

yum install unixODBC unixODBC-devel libtool-ltdl libtool-ltdl-devel
安装 unixODBC 截图
安装 unixODBC 截图

切换到 pdo_odbc 源代码目录

PHP 5.1 开始,PDO_ODBC 包含在 PHP 源代码中。可以使用 configure 命令将 PDO_ODBC 扩展编译为静态或共享模块。

所以我们只需要切换到 pdo_odbc 源代码目录进行编译,不用再去另外下载了。

以下我用的是 PHP 7.4 ,宝塔我选择安装到 /www 目录,后续你需要根据你的情况修改路径中的版本和安装目录,例如:PHP 5.6,你可以把路径中的 74 改成 56PHP 8.0,你可以把路径中的 74 改成 80

cd /www/server/php/74/src/ext/pdo_odbc

清理编译缓存

如果你在尝试这篇教程直接,尝试过其它网上的方法,先执行下以下命令清除缓存,否则加载扩展时可能会出现

PHP Warning: PHP Startup: Invalid library (maybe not a PHP library) '/www/server/php/74/lib/php/extensions/no-debug-non-zts-20190902/pdo_odbc.so' in Unknown on line 0

make clean

phpize

phpize 命令是用来准备 PHP 扩展库的编译环境的,主要是根据系统信息生成对应的 configure 文件。

/www/server/php/74/bin/phpize
phpize
phpize

设置编译选项

./configure --with-php-config=/www/server/php/74/bin/php-config  --with-pdo-odbc=unixODBC,/usr/
configure
configure

构建和安装

make && make install
make && make install
make && make install

配置 php.ini

在宝塔里打开 PHP 管理,然后选择配置文件,大概在配置文件九百多行的位置新建一行,加入以下代码

extension=pdo_odbc
配置php.ini
配置php.ini

重启php

在宝塔里打开 PHP 管理,然后选择服务,点击重启按钮。

重启php-fpm
重启php-fpm

查看 phpinfo

查看 phpinfo,如果找到 PDO_ODBC,基本就是安装成功。

phpinfo
phpinfo

安装了扩展,还要在服务器安装数据库连接驱动才能连接 SQL Server 数据库,可以查看官方的安装文档:https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017


最后,开发者们,欢迎您加入腾云先锋(TDP)反馈交流群,群内有丰富的活动可收获积分和成长值,兑换惊喜福利。加入方式:https://cloud.tencent.com/developer/article/1855195

我们是腾云先锋(TDP)团队,是腾讯云GTS官方组建并运营的技术开发者群体。里有最专业的开发者&客户,能与产品人员亲密接触,专有的问题&需求反馈渠道,有一群志同道合的兄弟姐妹,期待您的加入!

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多