4

我正在尝试在 PHP 中使用 Firebird 扩展。我的文件夹php_pdo_firebird.dll, php_interbase.dll中有扩展文件 ( ) 。extphp.ini像这样将它们添加到我的文件中

...
[PHP_PDO_FIREBIRD]
extension=php_pdo_firebird.dll
[PHP_INTERBASE]
extension=php_interbase.dll
...

没有错误提示无法加载扩展,但每当我打印我的时,phpinfo我都没有看到它们中的任何一个。我在这里想念什么?

对于它的价值,我在 Windows 7 上使用 Apache 2.2 运行 PHP 版本 5.3.14 TS。

编辑:似乎记录了一些错误,只是我的error_log设置被覆盖了(对于那些看到这个的人,请仔细检查 C:\Windows\Temp\php-errors.log)。现在它告诉我,只要文件明确存在,就找不到指定的模块。

PHP Warning:  PHP Startup: Unable to load dynamic library 
    'C:\Program Files (x86)\PHP\ext\php_pdo_firebird.dll' - 
    The specified module could not be found.
    in Unknown on line 0

PHP Warning:  PHP Startup: Unable to load dynamic library 
    'C:\Program Files (x86)\PHP\ext\php_interbase.dll' - 
    The specified module could not be found.
    in Unknown on line 0
4

1 回答 1

8

弄清楚了!好的,首先要了解基础知识:

  • 确保 DLL 的版本与您的 PHP 版本相匹配。
  • 对于那些使用 Windows 安装程序的人,由于某种原因,它没有提供包含 Interbase 和 Firebird 模块的选项,因此您必须下载匹配的 .zip 文件并从其中的ext文件夹中复制它们。
  • 仔细检查您的设置中是否存在任何拼写错误,例如未转义的反斜杠extension_dir。这仅适用于值不是“用引号括起来”的情况。

现在是致命一击。该错误消息极具误导性。此时它应该可以找到您的 DLL,但它缺少一个完整的部分:fbclient.dll可以在bin您的 Firebird 安装文件夹中找到。我之前读到的所有地方都说放在fbclient.dll文件ext夹中,但只有将它放在PHP文件夹的根目录中才有效。

希望这有助于未来任性的灵魂:)

于 2012-12-05T16:38:34.010 回答