【问题标题】:PHP 7.x connection with MSSQL server with MAMPPHP 7.x 与带有 MAMP 的 MSSQL 服务器的连接
【发布时间】:2017-02-14 20:08:03
【问题描述】:

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

请指导我完成连接过程。

【问题讨论】:

  • 您是在 linux 还是 windows 上托管?

标签: sql-server mamp php-7 freetds


【解决方案1】:

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

/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,请使用它。

【讨论】:

  • 我在尝试这个时遇到了两个错误,首先由 /Applications/MAMP/bin/php/php7.xx/bin/pecl channel-update pecl.php.net 解决(用版本号替换 xx)然后我遇到了一个 make 错误并通过 brew install unixodbc 解决了这个问题
  • 谢谢!你的评论帮助我解决了我的问题。在投票最多的答案中,pecl 命令是使用路径调用的,因此它没有安装我用于需要它的站点的 php 版本的扩展。像这样调用 pecl 可以让我将它安装到我需要的版本上!
【解决方案2】:

虽然Vague SpacePedro Santiago 发布的答案有所帮助,但我仍然认为答案有点缺乏和不完整……或者要求你做太多。老实说the official Microsoft instructions 当他们说你需要安装他们的 SQL Server 的 Docker 映像时,他们太过分了?来吧……大多数人只需要安装驱动程序即可建立连接。

根据我在 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";

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

source ~/.bash_profile

完成后,让我们安装核心的 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

完成后,继续安装 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.soextension = pdo_sqlsrv.so 添加到 php.ini 配置中,但这些配置选项是 RedHat 在安装 PHP SQLSRV 时具有的选项Remi 回购。是的,它们中的大多数都被注释掉了,但我仍然喜欢把它放在那里以供参考。

【讨论】:

  • 谢谢!对我来说,有效的酿造水龙头是brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-releasebrew update,然后是brew install msodbcsql17 mssql-tools
  • 我也有 pecl install sqlsrv pdo_sqlsrv 失败,autom4te: need GNU m4 1.4 or later,通过以下帖子解决:superuser.com/questions/668746/…(稍作改动)
【解决方案3】:
  1. 按照本指南完成第 3 步:Microsoft PHP drivers for SQL Server
  2. 查找 pecl 在您的本地计算机中删除扩展的位置
  3. 将文件pdo_sqlsrv.sosqlsrv.so 复制到您的MAMP 的PHP 扩展目录中。我的地址是/Applications/MAMP/bin/php/php7x.x/lib/php/extensions/no-debug-foo-bar
  4. 编辑您的 php.ini 文件以包含新的扩展:

    extension=sqlsrv.so
    extension=pdo_sqlsrv.so
    
  5. 重新启动您的 MAMP 服务器。

【讨论】:

    【解决方案4】:

    刚刚在 2019 年使用 Windows 10 上的 MAMPPRO4 完成此操作(按照步骤 4 测试您是否已连接,然后执行第 9 点)第 5 点以后用于更改命令行中的路径

    1. 从微软下载 dll 文件 https://www.microsoft.com/en-gb/download/details.aspx?id=20098

    2. 运行exe文件后按照说明放置dll 将文件放入您所在的 php 版本的扩展目录中 使用例如:MAMP/bin/php/php7.1.29/ext

    3. 检查 phpinfo 获取 php.ini 文件的加载配置文件

    4. 根据您的要求添加 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

    5. 在控制面板中搜索高级系统设置并点击

    6. 点击环境变量

    7. 在系统变量而非用户变量下点击路径并点击编辑

    8. 单击新建并添加 C:\MAMP\bin\php\php7.1.29(将其编辑到您的路径)

    9. 重启 MAMP

    10. 打开一个新的命令行并输入 php -v 您应该会看到显示的 php 版本

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-19
      • 2017-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-02
      相关资源
      最近更新 更多