Hallo zusammen,
in 2021 hatte ich mein Projekt begonnen mein ERP-Programm von
PHP 5.5.15 auf PHP 7.3 zu konvertieren, was zu 90% auch abgeschlossen war.
Dann musste ich das aber leider auf Grund von privaten Herausforderungen
abbrechen und nun wäre der Zeitpunkt gekommen das Ganze forzusetzen
und endlich zu Ende zu bringen.
Da die Welt sich ja immer weiter dreht, ist PHP inzwischen bei V 8.x angekommen
und somit macht es meines Erachtens keinen Sinn mehr sich mit V 7.x zu beschäftigen.
Mein Freund Google hat mir allerdings nicht verraten, wie ich FireBird in PHP 8.x
zum Laufen bekomme, da FB ja ab V 7.4 aus PHP rausgeflogen ist.
Kann mir jemand einen Tipp geben, was ich zu tun habe, damit FB unter PHP 8.x läuft ?
Plattform: Windows10 mit Xampp PHP 8.1.10 und FireBird V3.0.4.33054
PHP-Support Versionen: > 7.3 & 8.x
Moderator: thorben.braun
Ok, ich habe den Tread "PHP 8 - Firebird-Treiber (ibase_...); für Linux und für Windows"
von "Ira" gefunden und es mit den dort bereitgestellten DLLs zum Laufen bekommen.
Die "php_8.1.0-interbase-3.0.0-win-x64-nts.dll" wird von PHP nicht geladen / gefunden.
Mit der "php_8.1.0-interbase-3.0.0-win-x64-ts.dll" kappt es. Die wird gefunden.
Ob die DLL wirklich funktioniert kann ich noch nicht sagen, weil ich erstmal ein
paar syntaktische Fehler in meinem alten auf PHP 5.6.x basierenden Code beseitigen
muss.
Da bin ich mal gespannt.
von "Ira" gefunden und es mit den dort bereitgestellten DLLs zum Laufen bekommen.
Die "php_8.1.0-interbase-3.0.0-win-x64-nts.dll" wird von PHP nicht geladen / gefunden.
Mit der "php_8.1.0-interbase-3.0.0-win-x64-ts.dll" kappt es. Die wird gefunden.
Ob die DLL wirklich funktioniert kann ich noch nicht sagen, weil ich erstmal ein
paar syntaktische Fehler in meinem alten auf PHP 5.6.x basierenden Code beseitigen
muss.
Da bin ich mal gespannt.
- martin.koeditz
- Beiträge: 469
- Registriert: Sa 31. Mär 2018, 14:35
Hallo Hamburgo,
ob die TS- oder NTS-Variante verwendet werden muss, hängt von der eingesetzten PHP-Version ab. Diese kannst du mittels phpinfo() ermitteln. Steht im Parameter "Thread safety" enabled ist die TS-Version installiert.
Gruß
Martin
ob die TS- oder NTS-Variante verwendet werden muss, hängt von der eingesetzten PHP-Version ab. Diese kannst du mittels phpinfo() ermitteln. Steht im Parameter "Thread safety" enabled ist die TS-Version installiert.
Gruß
Martin
Martin Köditz
it & synergy GmbH
it & synergy GmbH
Hallo Martin,
so, ich habe meine ersten Geh-Versuche unter PHP 8.1 gemacht,
was lediglich bedeutet, dass ich alle Fehler-Meldungen, die 8.1
gegenüber PHP 5.6.40 so produziert, den neuen Anforderungen
angepasst habe, also NIX "Neues" ge-coded hab.
Die ersten paar FireBird Befehle sind auch ganz gut durchgekommen,
bis auf fbird_commit();
Das wirft folgenden Fehler: Was kann bzw. habe ich da zu tun ?
Danke und viele Grüße
so, ich habe meine ersten Geh-Versuche unter PHP 8.1 gemacht,
was lediglich bedeutet, dass ich alle Fehler-Meldungen, die 8.1
gegenüber PHP 5.6.40 so produziert, den neuen Anforderungen
angepasst habe, also NIX "Neues" ge-coded hab.
Die ersten paar FireBird Befehle sind auch ganz gut durchgekommen,
bis auf fbird_commit();
Das wirft folgenden Fehler: Was kann bzw. habe ich da zu tun ?
Danke und viele Grüße
Hallo zusammen,
der fbird_commit($link_or_trans_identifier) macht leider weiterhin Probleme.
Wenn ich ein Select auf mehrere Datensätze einer Tabelle absetze und diese
in einer While-Schleife mit fbird_fetch_assoc($link_or_trans_identifier[Resource id #58]) auslese
und in dieser Schleife auf die einzelnen Datensätze derselben Tabelle mit
$db = fbird_query($link_or_trans_identifier[Resource id #53], $Update); ein Update und gleich
danach fbird_commit($link_or_trans_identifier[[Resource id #53]]) setze, erhalte ich anhängende
Fehler-Meldung:
und die While-Schleife bzw. das Script bricht beim fbird_fetch_assoc auf den 2. Datensatz ab.
Verzichte ich auf den fbird_commit($link_or_trans_identifier[[Resource id #53]]) läuft alles
problemlos, woraus ich schließe, das der fbird_commit auf die #53 auch Folgen für die
Resource id #58 hat.
Was mache ich da falsch ?
der fbird_commit($link_or_trans_identifier) macht leider weiterhin Probleme.
Wenn ich ein Select auf mehrere Datensätze einer Tabelle absetze und diese
in einer While-Schleife mit fbird_fetch_assoc($link_or_trans_identifier[Resource id #58]) auslese
und in dieser Schleife auf die einzelnen Datensätze derselben Tabelle mit
$db = fbird_query($link_or_trans_identifier[Resource id #53], $Update); ein Update und gleich
danach fbird_commit($link_or_trans_identifier[[Resource id #53]]) setze, erhalte ich anhängende
Fehler-Meldung:
und die While-Schleife bzw. das Script bricht beim fbird_fetch_assoc auf den 2. Datensatz ab.
Verzichte ich auf den fbird_commit($link_or_trans_identifier[[Resource id #53]]) läuft alles
problemlos, woraus ich schließe, das der fbird_commit auf die #53 auch Folgen für die
Resource id #58 hat.
Was mache ich da falsch ?
- Dateianhänge
-
- FireBird_02.png (15.66 KiB) 26365 mal betrachtet
- martin.koeditz
- Beiträge: 469
- Registriert: Sa 31. Mär 2018, 14:35
Bitte poste mal den Quellcode. Dann können wir das besser nachvollziehen und ggf. verifizieren.
Dank und Gruß
Martin
Dank und Gruß
Martin
Martin Köditz
it & synergy GmbH
it & synergy GmbH
Hallo Martin,
herzlichen Dank für die Bereitschaft meinen Quellcode zu durchleuchten,
aber das scheitert wohl an der Komplexität meines Codes.
Mein Programm ist multi-db-fähig, kann also mit FireBird, MySQL und
PostgreSQL (beta). Historisch bedingt allein mit FireBird über Pear-MDB2,
PDO und jetzt unter PHP 7/8 hat es auch FireBird / InterBase gelernt.
Meine Syntax in den Scripen basiert auf Pear-MDB2 und wird an Scripte
übergeben, die diese Syntax dann in die im Server konfigurierte Syntax
konvertiieren.
Da hat ein Externer kaum eine Chance mit einem "ehrenamtlich" vertrebaren
Aufwand durchzublicken.
Für mein Programm selbst brauchte ich bisher das explizite Setzen des
fbird_commit() überhaupt nicht. Das lief auch ohne zumindest bisher
problemlos.
Den fbird_commit() brauche ich bisher nur für meinen internen DB-Manager
und eingebaut, damit dieser "frisch" angelegte Tabellen im SELBEN Script
sofort "sehen" kann (hervorragender Tipp von "bfuerchau"), um die Daten
von ALT nach NEU pumpen zu können.
Viele Grüße
herzlichen Dank für die Bereitschaft meinen Quellcode zu durchleuchten,
aber das scheitert wohl an der Komplexität meines Codes.
Mein Programm ist multi-db-fähig, kann also mit FireBird, MySQL und
PostgreSQL (beta). Historisch bedingt allein mit FireBird über Pear-MDB2,
PDO und jetzt unter PHP 7/8 hat es auch FireBird / InterBase gelernt.
Meine Syntax in den Scripen basiert auf Pear-MDB2 und wird an Scripte
übergeben, die diese Syntax dann in die im Server konfigurierte Syntax
konvertiieren.
Da hat ein Externer kaum eine Chance mit einem "ehrenamtlich" vertrebaren
Aufwand durchzublicken.
Für mein Programm selbst brauchte ich bisher das explizite Setzen des
fbird_commit() überhaupt nicht. Das lief auch ohne zumindest bisher
problemlos.
Den fbird_commit() brauche ich bisher nur für meinen internen DB-Manager
und eingebaut, damit dieser "frisch" angelegte Tabellen im SELBEN Script
sofort "sehen" kann (hervorragender Tipp von "bfuerchau"), um die Daten
von ALT nach NEU pumpen zu können.
Viele Grüße