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
切换到 pdo_odbc 源代码目录
从 PHP 5.1
开始,PDO_ODBC
包含在 PHP 源代码中。可以使用 configure
命令将 PDO_ODBC
扩展编译为静态或共享模块。
所以我们只需要切换到 pdo_odbc
源代码目录进行编译,不用再去另外下载了。
以下我用的是
PHP 7.4
,宝塔我选择安装到/www
目录,后续你需要根据你的情况修改路径中的版本和安装目录,例如:PHP 5.6
,你可以把路径中的74
改成56
。PHP 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
设置编译选项
./configure --with-php-config=/www/server/php/74/bin/php-config --with-pdo-odbc=unixODBC,/usr/
构建和安装
make && make install
配置 php.ini
在宝塔里打开 PHP 管理
,然后选择配置文件,大概在配置文件九百多行的位置新建一行,加入以下代码
extension=pdo_odbc
重启php
在宝塔里打开 PHP 管理
,然后选择服务,点击重启按钮。
查看 phpinfo
查看 phpinfo
,如果找到 PDO_ODBC
,基本就是安装成功。
安装了扩展,还要在服务器安装数据库连接驱动才能连接 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官方组建并运营的技术开发者群体。里有最专业的开发者&客户,能与产品人员亲密接触,专有的问题&需求反馈渠道,有一群志同道合的兄弟姐妹,期待您的加入!