我正在处理一个遗留的 firebird 数据库,但似乎无法让它与 PHP7.4 一起工作。 PHP7.4中不再提供interbase扩展,我只能安装PDO_FIREBIRD。
PECL 上也没有发布。 https://pecl.php.net/package/interbase
有任何关于如何使其与 7.4 一起工作的提示吗?
最近版本的 PHP 确实不再随 interbase 包一起提供。相反,您可以使用 Firebird PHP 驱动程序,它是 interbase 包的一个分支和持续开发。
好吧,我在处理旧版 Firebird 数据结构时遇到了一些警告。
简单来说,我必须解决两个广泛的问题:
1 - 将客户端库与数据集磁盘结构 (ODS) 相匹配
每个 Firebird 版本都支持有限范围的磁盘结构 (ODS)。以下链接有关于此主题的非常好的参考:
https://ib-aid.com/en/articles/all-firebird-and-interbase-on-disk-struct-ods-versions
ADODB 和 PHP PDO 是主机系统中客户端库的抽象层。 PHP 7.4 仅支持 FB 3.0 及更高版本的客户端。因此,有必要将抽象层与可用的客户端库相匹配。 对于 FB 2.5 以下的数据集:
磁盘结构应达到 ODS 11;
ibase_
fbird_
应该可以正常工作;ADODB、PHP PDO 等应该磁盘结构应为ODS 12或更高;
ibase_
fbird_
应该不工作; ADODB、PDO 等应该可以正常工作。
对于任何客户端和服务器组合:
客户端和服务器应共享同一平台,32位或64位;
根据我的经验,很难将旧版 FB 连接“强制”到最新的 PHP 引擎中。我认为 Linux 系统更具挑战性,因为
libgcc
从版本 5 到版本 6 有不同的入口点(我猜......),并且
musl
不被支持。Windows 中的情况更加灵活,因为 fbclient.dll
是连接所需的唯一客户端库,并且它依赖于多年来保持相同入口点的 Win32 库。
我建议将数据集升级到 Firebird 4 并使用更新的扩展和客户端。但是,如果这不是一个选项,则应从主机操作系统通过 PHP 引擎,直到 FB 客户端来简化降级。不幸的是,我相信“这就是路。”
祝一切顺利。
没有这些 dll,它就无法工作,由于某种未知的原因,新版本的 xampp 丢失了。
为此,请使用:
就我而言,我使用的是 v.2.1。 下载 .zip 版本,32 / 64 位 - 与您的 php、apache 相同...
安装客户端
之后您可以检查是否安装正确:
instclient q f
安装客户端q g
$conn = new \PDO($dsn, $user, $pass, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);