【发布时间】:2017-02-14 20:08:03
【问题描述】:
我正在尝试通过 MAMP 将 mssql 服务器连接到 PHP 7.0.8。我试过使用freetds。在一些博客上,人们说要使用 pdo_dblib.so 扩展名,但它不起作用。
请指导我完成连接过程。
【问题讨论】:
-
您是在 linux 还是 windows 上托管?
标签: sql-server mamp php-7 freetds
我正在尝试通过 MAMP 将 mssql 服务器连接到 PHP 7.0.8。我试过使用freetds。在一些博客上,人们说要使用 pdo_dblib.so 扩展名,但它不起作用。
请指导我完成连接过程。
【问题讨论】:
标签: sql-server mamp php-7 freetds
对于那些仍然有这个问题的人:
/Applications/MAMP/bin/php/php7.2.1/bin/pecl install sqlsrv pdo_sqlsrv
编辑 php.ini:
extension=sqlsrv.so
extension=pdo_sqlsrv.so
如有必要,如果您还没有brew install autoconf,请使用它。
【讨论】:
虽然Vague Space 和Pedro Santiago 发布的答案有所帮助,但我仍然认为答案有点缺乏和不完整……或者要求你做太多。老实说the official Microsoft instructions 当他们说你需要安装他们的 SQL Server 的 Docker 映像时,他们太过分了?来吧……大多数人只需要安装驱动程序即可建立连接。
根据我在 MAMP(5.2 版)中安装 pdo_sqlsrv.so 和 sqlsrv.so 模块的经验,这是我的答案,但应该适用于大多数支持某种 PHP 7 风格的 MAMP 版本。
.bash_profile,使 MAMP 的二进制文件和库成为您的 $PATH 设置的一部分。首先,调整您的.bash_profile,使 MAMP 的东西在那里;使启动和使用 MAMP 特定二进制文件变得更加容易,并确保在执行安装新模块等操作时检查 MAMP 库。
我喜欢这样做的方式是这样的;像这样设置$MAMP_BIN 和$MAMP_PHP 变量,然后重建$PATH 变量:
# MAMP stuff.
export MAMP_BIN="/Applications/MAMP/Library/bin";
export MAMP_PHP="/Applications/MAMP/bin/php/php7.2.10/bin";
# Final $PATH setting.
export PATH="/usr/local/bin:/usr/local/sbin:$MAMP_BIN:$MAMP_PHP:$PATH";
保存它,然后退出终端会话并重新登录,或者像这样资源.bash_profile:
source ~/.bash_profile
完成后,让我们安装核心的 Microsoft ODBC 二进制文件。
这样做是为了在 macOS 上安装核心 ODBC 东西;一定要安装Homebrew:
brew tap microsoft/SQLSRV-release https://github.com/Microsoft/homebrew-SQLSRV-release
brew update
brew install --no-sandbox msodbcsql17 SQLSRV-tools
完成后,继续安装 Unix ODBC,如下所示:
brew install unixodbc
现在通过 PECL 安装实际的 PHP 模块:
pecl install sqlsrv pdo_sqlsrv
安装模块后,将它们添加到 MAMP 中的 php.ini 文件中,以便 PHP 可以识别它。对于 MAMP 5.x 上的 PHP 7.2.10,它应该位于此处:
/Applications/MAMP/bin/php/php7.2.10/conf/php.ini
只需将这些配置行添加到文件底部:
; Enable 'Microsoft Drivers for PHP for SQL Server' extension module
extension = sqlsrv.so
extension = pdo_sqlsrv.so
; Configuration
;sqlsrv.WarningsReturnAsErrors = 1
;sqlsrv.LogSeverity = 0
;sqlsrv.LogSubsystems = 0
;sqlsrv.ClientBufferMaxKBSize = 10240
;pdo_sqlsrv.log_severity = 0
;pdo_sqlsrv.client_buffer_max_kb_size = 10240
注意,大多数教程——甚至是安装模块时的 PECL——只是提到将 extension = sqlsrv.so 和 extension = pdo_sqlsrv.so 添加到 php.ini 配置中,但这些配置选项是 RedHat 在安装 PHP SQLSRV 时具有的选项Remi 回购。是的,它们中的大多数都被注释掉了,但我仍然喜欢把它放在那里以供参考。
【讨论】:
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release、brew update,然后是brew install msodbcsql17 mssql-tools
pecl install sqlsrv pdo_sqlsrv 失败,autom4te: need GNU m4 1.4 or later,通过以下帖子解决:superuser.com/questions/668746/…(稍作改动)
pdo_sqlsrv.so 和sqlsrv.so 复制到您的MAMP 的PHP 扩展目录中。我的地址是/Applications/MAMP/bin/php/php7x.x/lib/php/extensions/no-debug-foo-bar
编辑您的 php.ini 文件以包含新的扩展:
extension=sqlsrv.so
extension=pdo_sqlsrv.so
重新启动您的 MAMP 服务器。
【讨论】:
刚刚在 2019 年使用 Windows 10 上的 MAMPPRO4 完成此操作(按照步骤 4 测试您是否已连接,然后执行第 9 点)第 5 点以后用于更改命令行中的路径
从微软下载 dll 文件 https://www.microsoft.com/en-gb/download/details.aspx?id=20098
运行exe文件后按照说明放置dll 将文件放入您所在的 php 版本的扩展目录中 使用例如:MAMP/bin/php/php7.1.29/ext
检查 phpinfo 获取 php.ini 文件的加载配置文件
根据您的要求添加 2 个 dll 文件(我浪费了时间 使用 64.dll)确保您使用的是 ts(线程安全)而不是 dll文件名中的nts(none thread safe)
extension=php_sqlsrv_71_ts_x86.dll
extension=php_pdo_sqlsrv_71_ts_x86.dll
在控制面板中搜索高级系统设置并点击
点击环境变量
在系统变量而非用户变量下点击路径并点击编辑
单击新建并添加 C:\MAMP\bin\php\php7.1.29(将其编辑到您的路径)
重启 MAMP
打开一个新的命令行并输入 php -v 您应该会看到显示的 php 版本
【讨论】: