无法在 Windows Server 2016 上加载 pdo 驱动程序

Impossible to load pdo driver on Windows Server 2016

我正在尝试在 windows 服务器 2016(64 位)上加载 firebird 数据库的 pdo 驱动程序。

接下来是配置:

作为证据: phpinfo result

我可以执行 PHP 文件。现在我想安装 PDO 驱动程序,以便可以轻松连接到 firebird 数据库。

我按照在互联网上找到的程序(在 php.in 中取消注释 extension=php_pdo_firebird.dll 并在 C/apache24/binc/php 中添加 fb.client.dll)并检查 PDO 是否使用此命令正确安装:

php -m|findstr -i pdo_

这表明我:PDO_Firebird

但是当我在test.php 文件中调用phpinfo 函数时,它没有显示任何PDO 驱动程序已经加载。它说:

PDO drivers : no values.

这很奇怪,因为 PHP 驱动程序在那里。 因此,在对互联网进行一些研究之后,我尝试了以下无效的方法:

尝试使用 php 文件连接到 firedbird 数据库时出现错误:

Fatal error: Uncaught PDOException: could not find driver in C:\Apache24\htdocs\test3.php:10 Stack trace: #0 C:\Apache24\htdocs\test3.php(10): PDO->__construct('firebird:dbname...', 'SYSDBA', 'masterkey', Array) #1 {main} thrown in C:\Apache24\htdocs\test3.php on line 10

当然我不能使用 PDO 驱动程序和使用 FB/IB 扩展,但我不想。

欢迎任何帮助或建议。

对于fb.client.dll这只是一个拼写错误,实际上文件名是fbclient.dll.

对于 php_interbase.dll,我在 php/ext 文件夹中获取了它。我还尝试在 php.ini 文件中添加扩展名=php_interbase.dll,现在当我输入 cmd 时: php -m|findstr -i pdo_ 我得到了接下来的东西: - PDO - PDO_Firebird

但仍然使用 phpinfo() 函数,即使在重新启动 Apache 后,我也得到了 PDO 驱动程序的 "no value"。

php --ini 显示: 配置文件(php.ini)路径:C:\Windows 加载的配置文件:C:\PHP\php.ini 在以下位置扫描其他 .ini 文件:(none) 已解析的其他 .ini 文件:(none)

而我编辑的php.ini的路径是C:\PHP\php.ini

已解决! 伙计们会笑话我的。我到处找问题,但实际上问题很简单,我看不到。在httpd.conf中,在文件末尾添加PHPIniDir"c:/php"时,我实际上添加了PHPIniDir"c/php"。真可惜 !不过最后还是抓住了。感谢您的帮助。

就我而言,原因有点复杂。

鉴于:

  1. Windows10-64/Apache24-64/PHP8-64.
  2. php -r "$s=new PDO(dsn, user, pass)" 运行良好,没有错误。 页面上的相同表达式抛出异常“未找到驱动程序”。
  3. php -i 列出 PDO Firebird 驱动程序和 dll 的版本。 php页面上的 info() 显示根本没有 PDO 驱动程序。

解决方案是不仅在 PHP 目录中而且在 Apache/bin 中复制 fbclient.dll(当然是 64 位)!