PHP 8 - Firebird-Treiber (ibase_...); für Linux und für Windows

Forum für Fragen rund um Firebird-Software von Drittanbietern.

Moderator: martin.koeditz

itonert
Beiträge: 11
Registriert: Mo 12. Apr 2021, 17:12

Guten Tag,

ich habe eine Bitte. Wir benötigen den interbase-Treiber, also die ibase-Funktionen, um auf unsere Firebird-Datenbanken zugreifen zu können, nun für PHP 8. Ich habe gesehen, dass auf https://github.com/FirebirdSQL/php-firebird/releases für Linux ein so-Modul bereitsteht. Gibt es die Möglichkeit, für Windows x64 auch schon eine DLL bereit zu stellen? Wir benötigen schlussendlich immer beides, haben aber jetzt keine Umgebung für einen Build-Lauf für die Windows-DLLs. Ich wäre sehr dankbar, wenn wir hier den Treiber zur Verfügung gestellt bekommen könnten.

Viele Grüße,
Ira
Benutzeravatar
martin.koeditz
Beiträge: 292
Registriert: Sa 31. Mär 2018, 14:35

Hallo Ira,

das Compilieren für Windows dauert extrem lange. Für jede Version muss eine spezielle Prozedur durchlaufen werden. Leider bin ich derzeit anderweitig viel beschäftigt. Ich werde versuchen bis Ende der Woche einen aktuellen Treiber zu erstellen.

Du kannst aber sicherlich erstmal die Version 1.1.0 verwenden.
https://github.com/FirebirdSQL/php-firebird/releases

Gruß
Martin
Martin Köditz
it & synergy GmbH
itonert
Beiträge: 11
Registriert: Mo 12. Apr 2021, 17:12

Hallo Martin,

danke. Ende der Woche, das klingt doch gut.

Gruß,
Ira
itonert
Beiträge: 11
Registriert: Mo 12. Apr 2021, 17:12

Hallo Martin,

es kann auch gern die PHP Version 8.0.3 sein. Das stellen wir bei uns auch gern um.

Für den Übergang habe ich die Version 1.1.0 der nts-x64-DLL ausprobiert, habe dafür auch PHP 8.0.0 installiert. Ich stoße aber auf ein Problem, so dass derzeit der Treiber für uns nicht nutzbar ist.

Es tritt ein Problem auf, was mit Blob-Feldern zusammenhängt: Wenn ich ibase_blob_info() aufrufe, erhalte ich die Meldung "Unrecognized BLOB ID". Das erhalte ich in PHP-Versionen < 8 nicht. Wir arbeiten schon 20 Jahre mit diesem Code an der Stelle so. Gibt es an der Stelle eine Änderung im Treiber, so dass ich die Software umschreiben muss? Oder ist da evtl. ein Bug im Treiber?

Ich denke, dass das, was ibase_fetch_object() für ein Blobfeld, was z.B. eine Bilddatei enthält, jetzt anders ist. (Wir rufen ibase_fetch_object ohne Parameter fetch_flag auf, also damit ergibt sich Wert 0 dafür). Mit dem alten Treiber bekomme ich z.B. folgendes, was ich dann als BlobID verwende: '0x000000000000016a'. Mit dem neuen Treiber bekomme ich folgendes: '0x %I6'. Und das wird dann wohl nicht als BlobID erkannt und ich kann damit jetzt nichts weiter mehr anfangen.

Gruß,
Ira
itonert
Beiträge: 11
Registriert: Mo 12. Apr 2021, 17:12

Hallo Martin,

mir ist der nächste Fehler aufgefallen. Auch das Schreiben eines Blobs gelingt mir nicht. Ich hole mir mit ibase_blob_create() eine BlobID, füge mittels ibase_blob_create() den Inhalt dort hinein und schließe dann mit ibase_blob_close() das Blob. Damit bekomme ich ja eine blobid zurück, die ich dann in das entsprechende Tabellenfeld schreiben muss. Hier bekomme ich aber auch statt der BlobID einen String '0x %I6' geliefert und das ist halt keine BlobID.

Ich gehe also auch hier von einem Fehler im Treiber aus.

Ich bitte darum, die Blob-Funktionalität mit der Arbeit mit der BlobID im Treiber wieder herzustellen, da wir intensiv mit Lesen und Schreiben der Blobfelder arbeiten.
(Für das Lesen habe ich mir mittlerweile einen Workaround geschaffen, den ich aber nicht beibehalten möchte. Aber für das Schreiben fällt mir gerade kein Workaround ein.)

Gruß,
Ira
itonert
Beiträge: 11
Registriert: Mo 12. Apr 2021, 17:12

Hallo Martin,

auch die Funktion ibase_blob_import() läuft nicht, auch hier gibt es keine korrekte BlobID zurück.

Gruß,
Ira
itonert
Beiträge: 11
Registriert: Mo 12. Apr 2021, 17:12

Hallo Martin,

kann ich eine Information erhalten, ob das Thema mit den Blob-Feldern angegangen wird für den Treiber?

Beste Grüße,
Ira
Benutzeravatar
martin.koeditz
Beiträge: 292
Registriert: Sa 31. Mär 2018, 14:35

Hallo Ira,

bitte entschuldige die späte Rückmeldung. Bin derzeit voll eingespannt.

Du hast ja schon einige Daten bzgl. der Prüfung bereitgestellt. Diese werde ich zwecks Test nutzen. Ich sollte Sonntag dazu kommen.
Am Treiber und der Funktionalität hat sich nichts geändert. Allerdings habe ich selbst auch noch nichts weiter mit PHP 8 getan. Nur oberflächliche Tests.

Gruß
Martin
Martin Köditz
it & synergy GmbH
itonert
Beiträge: 11
Registriert: Mo 12. Apr 2021, 17:12

Hallo Martin,

danke für die Zwischeninfo. Wenn ich helfen, also dann z.B. was ausprobieren, kann, ich helfe gerne. Ich bräuchte dann die DLL nts x64.

Gruß,
Ira
Benutzeravatar
martin.koeditz
Beiträge: 292
Registriert: Sa 31. Mär 2018, 14:35

Hallo Ira,

dann werde ich dir diese priorisiert bereitstellen.

Gruß
Martin
Martin Köditz
it & synergy GmbH
Antworten