【问题标题】:PHP 7 on IIS: Call_user_function could not be locatedIIS 上的 PHP 7:找不到 Call_user_function
【发布时间】:2016-12-09 20:43:19
【问题描述】:

我正在尝试在 Windows 2012 R2 64 位服务器上使用 Microsoft SQL Server 驱动程序和 PHP 7.1 Not Thread Safe x64。

无论我做什么,当我从管理员命令提示符运行 php 时都会出错

警告:PHP 启动:无法加载动态库 'ext\php_pdo_sqlsrv_7_nts.dll' - 指定的过程不能 找到了。

此外,它还会显示一个弹出窗口,说明

过程入口点 call_user_function 不能位于 动态链接库 C:\PHP7\ext\php_pdo_dqlsrv7_nts_x64.dll

我已经验证 php.ini 指向一个存在的文件,因为如果我重命名 .dll 文件,错误消息会变为“找不到指定的模块”,而不是指定的过程。

我已按照 PHP 7 的要求安装了 Microsoft Visual C++ 运行时 15 x64。

我已按照 Microsoft SQL Server 驱动程序的要求安装了 Microsoft ODBC 驱动程序 13。

我已经重启了两次服务器。

我想不出什么可以尝试的了。经 phpinfo 验证,Microsoft WinCache.dll 在 PHP 中加载和工作正常。

【问题讨论】:

  • 我在试图让 PHP 7.3.10 使用 redis v3.1.0 的 Win10 机器上也遇到了几乎相同的错误

标签: php sql-server iis


【解决方案1】:

确认@MEmerson 上面所说的。您需要将 PHP 降级到 7.0.X(?) - 我使用的是 7.0.12。

完成设置:

与 PHP X64 7.1.0 相同的驱动程序产生了您遇到的错误。

【讨论】:

  • 也适用于 Windows 8.1。
【解决方案2】:

Microsoft Drivers 4.3 for PHP for SQL Server 现在可用。 这些驱动程序包含 PHP 7.1 的文件 - php_pdo_sqlsrv_71_nts_x64.dll 等。 我已经成功连接到 SQL 服务器。

【讨论】:

【解决方案3】:

在 MS Windows Server 2012 上尝试使用 httpd (Apache)、PHP 7.2.2、Microsoft ODBC 驱动程序 11 时出现类似错误。错误文本为:

在动态链接库php_pdo_sqlsrv_7_ts_x64.dll中找不到过程入口点call_user_function。

当我打电话给php -m 来检查模块时。

所以我从https://github.com/Microsoft/msphpsql/releases 下载了 Windows-7.2.zip,并从中使用了线程安全的 dll。

php -m 现在可以正常工作而不会出错。

【讨论】:

    【解决方案4】:

    与 NoCopy 相同

    7.1.x 仍然是 Microsoft 的不,不

    【讨论】:

    • 请多解释一下您的解决方案是什么
    【解决方案5】:

    今天我在 IIS 中启用扩展时发生了这种情况,我错误地为 pdo 和驱动程序扩展启用了不同版本(例如,php_sqlsrv_7_nts_x86.dll 用于 PHP 7.0 和 php_pdo_sqlsrv_72_nts_x86.dll 用于 PHP 7.2)。

    通常,您从 Microsoft 下载的包含 Microsoft Drivers 5.3 for PHP for SQL Server 的软件包具有所有 PHP 扩展版本。 https://www.microsoft.com/en-us/download/details.aspx?id=57163

    只需确保为相同版本启用两个扩展程序即可避免该错误。

    【讨论】:

      猜你喜欢
      • 2011-06-23
      • 1970-01-01
      • 2011-09-03
      • 2012-04-03
      • 2016-11-19
      • 2012-02-19
      • 1970-01-01
      • 2021-01-20
      • 2012-11-19
      相关资源
      最近更新 更多