PHP 7.x与MSSQL服务器与MAMP的连接

Ami*_*rma 5 sql-server mamp freetds php-7

我试图通过MAMP将mssql服务器连接到PHP 7.0.8.我尝试过使用freetds.在一些博客上,人们说要使用pdo_dblib.so扩展,但它不起作用.

请指导我完成连接过程.

小智 9

对于那些仍然有这个问题的人:

/Applications/MAMP/bin/php/php7.2.1/bin/pecl install sqlsrv pdo_sqlsrv
Run Code Online (Sandbox Code Playgroud)

编辑 php.ini:

extension=sqlsrv.so
extension=pdo_sqlsrv.so
Run Code Online (Sandbox Code Playgroud)

如有必要,brew install autoconf如果您还没有它,请使用它。


Jak*_*uld 5

虽然Vague SpacePedro Santiago发布的答案有所帮助,但我仍然认为答案有点缺乏和不完整......或者要求你做的太多。老实说当他们声明您需要安装他们的 SQL Server Docker 映像时,Microsoft 的官方说明是矫枉过正的?来吧... 大多数人只需要安装驱动程序来建立连接。

所以这是我根据我在 MAMP(5.2 版)中安装pdo_sqlsrv.sosqlsrv.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";
Run Code Online (Sandbox Code Playgroud)

保存它并退出终端会话并重新登录,或者只是.bash_profile像这样的资源:

source ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

完成后,让我们安装核心 Microsoft ODBC 二进制文件。

安装 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
Run Code Online (Sandbox Code Playgroud)

完成后,继续安装 Unix ODBC 的东西,如下所示:

brew install unixodbc
Run Code Online (Sandbox Code Playgroud)

现在通过 PECL 安装实际的 PHP 模块:

pecl install sqlsrv pdo_sqlsrv
Run Code Online (Sandbox Code Playgroud)

安装模块后,将它们添加到php.iniMAMP 中的文件中,以便 PHP 可以识别它。对于 MAMP 5.x 上的 PHP 7.2.10,它应该位于此处:

/Applications/MAMP/bin/php/php7.2.10/conf/php.ini
Run Code Online (Sandbox Code Playgroud)

只需将这些配置行添加到文件的底部:

; 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
Run Code Online (Sandbox Code Playgroud)

请注意,大多数教程——甚至是安装模块时的 PECL——只是简单地提到了添加extension = sqlsrv.soextension = pdo_sqlsrv.sophp.ini配置,但这些配置选项是 RedHat 在通过Remi 存储库安装 PHP SQLSRV 时具有的选项。是的,他们中的大多数都被注释掉了,但我仍然喜欢把它放在那里以供参考。


小智 4

  1. 按照本指南完成第 3 步:适用于 SQL Server 的 Microsoft PHP 驱动程序
  2. 查找 pecl 在本地计算机中放置扩展的位置
  3. 将文件复制pdo_sqlsrv.sosqlsrv.soMAMP 的 PHP 扩展目录中。我的位于/Applications/MAMP/bin/php/php7x.x/lib/php/extensions/no-debug-foo-bar
  4. 编辑 php.ini 文件以包含新扩展:

    extension=sqlsrv.so
    extension=pdo_sqlsrv.so
    
    Run Code Online (Sandbox Code Playgroud)
  5. 重新启动您的 MAMP 服务器。