PHP启动:无法加载动态库

PHP启动:无法加载动态库,php,windows,windows-8,firebird,Php,Windows,Windows 8,Firebird,我正在尝试将Firebird 2.5.2.26539用于: 视窗8 Apache 2.2.22 PHP 5.4.10 当我在php中启用firebird的扩展时: - extension=php_interbase.dll - extension=php_pdo_firebird.dll 我发现以下错误: [26-Dec-2012 12:08:11 UTC]PHP警告:PHP启动:无法加载动态库“C:\Program Files(x86)\PHP\ext\PHP\u interbase.d

我正在尝试将Firebird 2.5.2.26539用于:

  • 视窗8
  • Apache 2.2.22
  • PHP 5.4.10
当我在php中启用firebird的扩展时:

- extension=php_interbase.dll
- extension=php_pdo_firebird.dll
我发现以下错误:

[26-Dec-2012 12:08:11 UTC]PHP警告:PHP启动:无法加载动态库“C:\Program Files(x86)\PHP\ext\PHP\u interbase.dll”-无法找到指定的模块。 在第0行的未知位置

[26-Dec-2012 12:08:13 UTC]PHP警告:PHP启动:无法加载动态库“C:\Program Files(x86)\PHP\ext\PHP_pdo_firebird.dll”-无法找到指定的模块。 在第0行的未知位置

如果在命令行中使用PHP-a,则错误消息不同:找不到fbclient.dll

我让flamerobin运行,它打开了数据库。因此,我将fbclient.dll复制到PHP根路径。 然后错误变为:

[26-Dec-2012 11:55:46 UTC]PHP警告:PHP启动:无法加载动态库“C:\Program Files(x86)\PHP\ext\PHP\u interbase.dll”-%1不是有效的Win32应用程序。 在第0行的未知位置

[26-Dec-2012 11:55:46 UTC]PHP警告:PHP启动:无法加载动态库“C:\Program Files(x86)\PHP\ext\PHP_pdo_firebird.dll”-%1不是有效的Win32应用程序。 在第0行的未知位置

有人能帮我吗?我怀疑Firebird的这个版本仍然没有为PHP制作正确的扩展。
谢谢。

Cli和Apache PHP使用两个不同的配置文件运行。这将解释在CLI模式下缺少错误消息的原因。可能是该应用程序的扩展未存储在PHP扩展文件夹中。我不熟悉windows下的配置,因此您可能需要搜索windows PHP扩展目录并确保扩展文件在那里

根据错误判断,路径为“C:\ProgramFiles(x86)\PHP\ext”\


在尝试加载扩展文件之前,请确保您的扩展文件在那里。

我重复上面Nenhum Poisé的评论(有些人可能会错过),因为这是问题的真正解决方案:


问题是FB 64位安装中的fbclient.dll。我刚从32位获得fbclient.dll,将其复制到PHP根目录中,解决了问题


如果在Windows上运行,请检查扩展是否使用与PHP解释器相同的Visual Studio编译器版本编译

从PHP下载页面

  • PHP 7.3=VC15
  • PHP 7.1=VC14
  • PHP 5.6=VC11

鉴于示例的MongoDB扩展是使用VC11编译的,请参阅并检查
-VC11-

的DLL列表文件名。您确定使用的不是64位Apache/PHP,而是32位Firebird(反之亦然)?尝试将这三个文件复制到c:\windows\system32\或apache bit folder。在执行扩展之前,将新的dll文件移动到扩展文件夹可能会导致新的错误。这可能是错误更改的外观:)您好,在windows中,cli和apache PHP模式具有相同的ini文件。此外,我还具有pdo_firebird的扩展名ext目录中的d firebird。问题不同。问题是FB 64位安装中的fbclient.dll。我刚从32位获得fbclient.dll,将其复制到PHP根目录中,它解决了问题。我遇到了一个类似的问题:我更改了PHP目录的路径以切换默认PHP版本。这导致fbclient.dll是searched位于新的路径目录中,而不是Apache运行php的php目录中。即使扩展名_dir似乎也正确,但php_interbase.dll并不选择其父文件夹的fbclient.dll,而是从路径中选择的。