IIS上的PHP 7:无法找到Call_user_function

时间:2016-12-09 20:43:19

标签: php sql-server iis

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

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

  

警告:PHP启动:无法加载动态库   '分机\ 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中正常运行。

5 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:7)

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

完成设置:

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

答案 2 :(得分:2)

与NoCopy相同

7.1.x仍然是否定,否则来自Microsoft

答案 3 :(得分:1)

尝试在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 :(得分:0)

今天在我启用IIS中的扩展时发生了我的事,我错误地在其中启用了pdo和驱动程序扩展的不同版本(例如,PHP 7.0的php_sqlsrv_7_nts_x86.dll和PHP 7.2的php_pdo_sqlsrv_72_nts_x86.dll)。 / p>

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

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