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

时间:2018-07-05 14:56:22

标签: php apache pdo driver firebird

我正在尝试在Windows Server 2016(64位)上加载Firebird数据库的pdo驱动程序。

配置是下一个:

  • 已成功安装32位Firebird。
  • 已成功安装Apache 2.4(32位Apachelounge二进制文件)。
  • 正确配置了Apache配置(安装在C:/ Apache24中)
  • PHP 32位作为mod_php(Apache处理程序2.0)模块成功安装(在C:/ PHP中)。

作为证明: phpinfo result

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

我按照互联网上发现的步骤操作(在extension=php_pdo_firebird.dll中取消注释php.in,并在fb.client.dllC/apache24/bin中添加c/php),并检查PDO是否正确使用以下命令安装:

php -m|findstr -i pdo_

哪个显示给我:PDO_Firebird

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

PDO drivers : no values.

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

  • 在路径中添加C/PHPC:/Apche24/bin
  • fbclient.dllC:/Apache/bin甚至C:/PHP中复制C:/PHP/ext
  • php.ini中取消注释行"extension_dir = "ext""
  • 对于同一行,将值"ext"更改为"C:/PHP/ext"
  • 完成所有操作后重新启动服务器

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

  

致命错误:未捕获的PDOException:在C:\ Apache24 \ htdocs \ test3.php:10中找不到驱动程序   堆栈跟踪:#0 C:\ Apache24 \ htdocs \ test3.php(10):PDO-> __ construct('firebird:dbname ...','SYSDBA','masterkey',Array)#1 {main}被抛出第10行的C:\ Apache24 \ htdocs \ test3.php

我当然不能使用PDO驱动程序,而不能使用FB / IB扩展,但是我不想这样做。

欢迎任何帮助或建议。

对于fb.client.dll来说,只是拼写错误,实际上文件名为fbclient.dll。

对于php_interbase.dll,我将其保存在php / ext文件夹中。我也尝试在php.ini文件中添加extension = php_interbase.dll,现在当我输入cmd时: php -m | findstr -i pdo_ 我得到接下来的事情:  -PDO  -PDO_Firebird

但是仍然使用phpinfo()函数,即使重新启动Apache后,我也无法获得PDO驱动程序的值。

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

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

2 个答案:

答案 0 :(得分:0)

解决了! 伙计们会嘲笑我。我到处都在寻找问题,但实际上问题是如此简单,以至于我看不到它。在httpd.conf中,当在文件末尾添加PHPIniDir“ c:/ php”时,我实际上添加了PHPIniDir“ c / php”。多可惜 !但是终于抓住了。谢谢您的帮助。

答案 1 :(得分:0)

就我而言,原因稍微复杂一些。

给定:

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

解决方案是不仅将 fbclient.dll(当然是 64 位)复制到 PHP 目录中,还复制到 Apache/bin 中!