我正在尝试在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中正常运行。
答案 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
只需确保为相同版本启用了两个扩展,即可避免该错误。