无法在 Windows Server 2016 上加载 pdo 驱动程序
Impossible to load pdo driver on Windows Server 2016
我正在尝试在 windows 服务器 2016(64 位)上加载 firebird 数据库的 pdo 驱动程序。
接下来是配置:
- 32 位 Firebird 安装成功。
- Apache 2.4 成功安装(Apachelounge 二进制,32 位)。
- 正确设置 Apache 配置(安装在 C:/Apache24)
- PHP 32 位成功安装(在 C:/PHP 中)作为模块 mod_php(apache 处理程序 2.0)。
作为证据:
phpinfo result
我可以执行 PHP 文件。现在我想安装 PDO 驱动程序,以便可以轻松连接到 firebird 数据库。
我按照在互联网上找到的程序(在 php.in
中取消注释 extension=php_pdo_firebird.dll
并在 C/apache24/bin
和 c/php
中添加 fb.client.dll
)并检查 PDO 是否使用此命令正确安装:
php -m|findstr -i pdo_
这表明我:PDO_Firebird
但是当我在test.php
文件中调用phpinfo 函数时,它没有显示任何PDO 驱动程序已经加载。它说:
PDO drivers : no values.
这很奇怪,因为 PHP 驱动程序在那里。
因此,在对互联网进行一些研究之后,我尝试了以下无效的方法:
- 在路径中添加
C/PHP
和 C:/Apche24/bin
- 在
C:/Apache/bin
、C:/PHP
甚至C:/PHP/ext
中复制fbclient.dll
- 在
php.ini
中取消注释行 "extension_dir = "ext""
- 对于同一行,将
"ext"
的值更改为 "C:/PHP/ext"
- 之后重新启动服务器
尝试使用 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"。真可惜 !不过最后还是抓住了。感谢您的帮助。
就我而言,原因有点复杂。
鉴于:
- Windows10-64/Apache24-64/PHP8-64.
- php -r "$s=new PDO(dsn, user, pass)" 运行良好,没有错误。
页面上的相同表达式抛出异常“未找到驱动程序”。
- php -i 列出 PDO Firebird 驱动程序和 dll 的版本。
php页面上的 info() 显示根本没有 PDO 驱动程序。
解决方案是不仅在 PHP 目录中而且在 Apache/bin 中复制 fbclient.dll(当然是 64 位)!
我正在尝试在 windows 服务器 2016(64 位)上加载 firebird 数据库的 pdo 驱动程序。
接下来是配置:
- 32 位 Firebird 安装成功。
- Apache 2.4 成功安装(Apachelounge 二进制,32 位)。
- 正确设置 Apache 配置(安装在 C:/Apache24)
- PHP 32 位成功安装(在 C:/PHP 中)作为模块 mod_php(apache 处理程序 2.0)。
作为证据: phpinfo result
我可以执行 PHP 文件。现在我想安装 PDO 驱动程序,以便可以轻松连接到 firebird 数据库。
我按照在互联网上找到的程序(在 php.in
中取消注释 extension=php_pdo_firebird.dll
并在 C/apache24/bin
和 c/php
中添加 fb.client.dll
)并检查 PDO 是否使用此命令正确安装:
php -m|findstr -i pdo_
这表明我:PDO_Firebird
但是当我在test.php
文件中调用phpinfo 函数时,它没有显示任何PDO 驱动程序已经加载。它说:
PDO drivers : no values.
这很奇怪,因为 PHP 驱动程序在那里。 因此,在对互联网进行一些研究之后,我尝试了以下无效的方法:
- 在路径中添加
C/PHP
和C:/Apche24/bin
- 在
C:/Apache/bin
、C:/PHP
甚至C:/PHP/ext
中复制 - 在
php.ini
中取消注释行"extension_dir = "ext""
- 对于同一行,将
"ext"
的值更改为"C:/PHP/ext"
- 之后重新启动服务器
fbclient.dll
尝试使用 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"。真可惜 !不过最后还是抓住了。感谢您的帮助。
就我而言,原因有点复杂。
鉴于:
- Windows10-64/Apache24-64/PHP8-64.
- php -r "$s=new PDO(dsn, user, pass)" 运行良好,没有错误。 页面上的相同表达式抛出异常“未找到驱动程序”。
- php -i 列出 PDO Firebird 驱动程序和 dll 的版本。 php页面上的 info() 显示根本没有 PDO 驱动程序。
解决方案是不仅在 PHP 目录中而且在 Apache/bin 中复制 fbclient.dll(当然是 64 位)!