有关于MAC环境下安装SQL Server的PHP扩展

前言

Mac环境下使用Sql Server,本来以为普通安装就可以解决问题,结果状况百出

安装流程

  1. Homebrew环境、php环境
  2. unixodbc环境
  3. 安装pdo_sqlsrvsqlsrv扩展

Microsoft官方教程

这里我是通过brew安装的php7.4

1
brew install php@7.4

image-20211224234853152

有了上面的基础环境后,接下来安装ODBC 驱动程序, pecl 命令用它来安装 PHP 驱动程序

1
brew install unixodbc

安装PHP扩展

1
2
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv

成功情况

image-20211224215040876

问题处理

一般来说是说按照流程走是没有问题的,但是不出意外的话是会出意外的

如果是PHP版本问题就自己解决一下版本切换问题

HomeBrew 有一个brew-php-switcher用来切换PHP版本

1
brew install brew-php-switcher

除了版本问题另外一个最大的问题就是没有ODBC环境,但我最近碰到的问题就是我明明有这个环境还是安装失败

1
2
3
4
5
6
7
8
9
In file included from /private/tmp/pear/temp/pdo_sqlsrv/pdo_dbh.cpp:24:
In file included from /private/tmp/pear/temp/pdo_sqlsrv/php_pdo_sqlsrv_int.h:23:
In file included from /private/tmp/pear/temp/pdo_sqlsrv/shared/core_sqlsrv.h:41:
In file included from /private/tmp/pear/temp/pdo_sqlsrv/shared/FormattedPrint.h:24:
In file included from /private/tmp/pear/temp/pdo_sqlsrv/shared/xplat_winnls.h:24:
In file included from /private/tmp/pear/temp/pdo_sqlsrv/shared/typedefs_for_linux.h:23:
/private/tmp/pear/temp/pdo_sqlsrv/shared/xplat.h:30:10: fatal error: 'sql.h' file not found

类似于这样缺少 sql.h 之类头文件的

我琢磨了半天,我以为是我unixodbc没有安装成功,结果使用命令odbcinst -j也得到他的安装情况

最后经过一番调查问题处在于我没有使用到odbc的头文件以及库文件

即 我需要调整一下makefile的一些参数

最后采用的安装方式

1
2
sudo CXXFLAGS="-I/opt/homebrew/Cellar/unixodbc/2.3.9_1/include" LDFLAGS="-L/opt/homebrew/lib" pecl install pdo_sqlsrv
sudo CXXFLAGS="-I/opt/homebrew/Cellar/unixodbc/2.3.9_1/include" LDFLAGS="-L/opt/homebrew/lib" pecl install sqlsrv

CXXFLAGS表示用于 C++ 编译器的选项

LDFLAGS是传递给连接器的选项

-I(大写i)表示以这个目录目录作为第一个寻找头文件的目录

-L(大写l)标示以这个目录作为第一个寻找库文件的目录

结果呢又遇到了这个问题

image-20211224183412690

存在但是又不存在

这里最简单的处理方式为直接删了这个软链接

如果有问题的话大不了把这里的文件复制到软链接指向的地方,再进行软链接就ok了

image-20211224214816305

到这里的话基本上已经安装好了

可是呢 后来还是遇到了一个小问题 有关于openssl的处理方案也是很简单 参考

1
2
rm /opt/homebrew/opt/openssl
ln -s /opt/homebrew/Cellar/openssl@1.1/1.1.1m /opt/homebrew/opt/openssl

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!