![]() |
Datenbank: InterBase • Version: XE3 • Zugriff über: PHP
Interbase XE3 server via PHP
Hallo,
ich habe das Problem, dass ich auf einen Interbase XE3 server zugreifen muss via PHP und bekomme es einfach nicht hin. follgendes habe ich versucht: ibase_connect (via Firebird 2.5):
Code:
Fehlermeldung: Warning: ibase_connect(): unsupported on-disk structure for file D:\xxx\xxx.IB; found 11.2, support 11.2 in C:\xampp\htdocs\index.php on line 11$db = 'localhost:D:\xxx\xxx.IB'; $username='SYSDBA'; $password='masterkey'; $dbh = ibase_connect ( $db, $username, $password ) or die ("errors in db connect"); Des weiteren habe ich natürlich das Problem, wenn gleichzeitig eine Verbindung mit der IBConsole besteht, dass dann sofort ein IO-Fehler kommt. Deshalb würde mir die Lösung nicht gefallen. des weiteren habe ich versucht das ganze mittels ODBC laufen zu lassen und habe den Treiber ODBC von Embarcadero installiert. Dann natürlich meinen PHP-Code abgeändert:
Code:
$user = 'SYSDBA';
$pass = 'masterkey'; $server = 'localhost:D:\xxx\xxx.IB'; // No changes needed from now on $connection_string = "DRIVER=InterBase ODBC driver; UID=SYSDBA; PWD=masterkey; DBNAME=localhost:D:\xxx\xxx.IB;"; $conn = odbc_connect($connection_string,$user,$pass); if ($conn) { echo "Connection established."; } else{ die("Connection could not be established."); } das liefert mir dann: Warning: odbc_connect(): SQL error: [ODBC InterBase Driver]connection rejected by remote interface, SQL state 08004 in SQLConnect in C:\xampp\htdocs\index.php on line 42 Connection could not be established. Mache ich grundsätzlich was falsch? Gibt es eine Möglichkeit via PHP direkt mit dem Interbase XE3 Server zu kommunitzieren oder ginge das nur mittes Firebird Server und auf die Datenbankdatei? ich hoffe es kann mir jemand helfen! Danke Stefan |
AW: Interbase X3 server via PHP
Zitat:
Oder die installierte Serverversion passt nicht zu der Datei. |
AW: Interbase X3 server via PHP
Also ich hab irgendwie den Eindruck, man versucht mittels einer Firebird-Library auf einen Interbase-Server zuzugreifen. Interbase und Firebird sind jedoch nicht dasselbe und haben sich bereits vor längerer Zeit auseinanderentwickelt.
|
AW: Interbase X3 server via PHP
Hallo,
Danke euch fur die Antwort! Zitat:
Zitat:
Kann mir jemand bestätigen, dass das nicht geht? Dann kann ich nämich aufhören zu versuchen ;-) zur 2. Idee den ODBC Trieber zu benutzen. Hat da jemand eine Idee warum das nicht geht. Passt der DNS connecting String nicht? LG und Danke Stefan |
AW: Interbase X3 server via PHP
du kommst auch mit einem aktuellen Firebird Client auf nahezu alle Interbase Versionen, sofern du bei Blob und Interbase speziellen Datentypen vorsichtig bist. Wir nutzen das regelmäßig, um die letzten Interbase Kunden so nach und nach auf Firebird umzustellen (Wir gehen dabei direkt aus der Firebird Datenbank via execute statement on external auf Interbase, ist aber für dich hier erst mal nicht wichtig, wenn du bei Interbase bleiben willst oder musst).
Wichtig ist dabei aber, das du einen connectionstring am besten mit port nutzt, um dich mit dem interbase server zu verbinden (z.B. 1.2.3.4/3050:C:\pfad\db.gdb oder ähnlich. Der Instanzname von Interbase, sofern benutzt, statt /3050 hilft dir nicht weiter. Nimm den tcp/ip port (standard 3050). Wenn du auf der selben Kiste Interbase und Firebird parallel installiert hast, könnte es sein, das die sich auf 3050 in die quere kommen. stelle dann ggf den firebird port in der firebird.conf unter remoteserviceport auf einen anderen port und starte die kiste neu. du kommst auch mit pdo und dem firebird client dann auf interbase, wenn der connection string passt hier ein Beispiel Quellcode einer minimal php Anwendung aus unseren Powerworkshops
Code:
<?php
try { $dbh = new PDO("firebird:dbname=localhost/3050:c:\db\barcode.fdb", "SYSDBA", "masterke"); $dbh->beginTransaction(); $sql = "SELECT txt FROM IBEWEB('"; $sql .= $_POST["CMD"]; $sql .= "','"; $sql .= implode("#",$_POST); $sql .= "#"; $sql .= implode("#",$_GET); $sql .= "','"; $sql .= $_SERVER["REMOTE_ADDR"]; $sql .= "')"; foreach ($dbh->query($sql) as $row) { print $row['TXT'] . ''; } $dbh->commit(); } catch (PDOException $e) { echo $e->getMessage(); } $dbh=null; ?> |
AW: Interbase X3 server via PHP
Danke für den Hinweis, habs auch gleich probiert, habe aber schon folgende bekannte Fehlermeldung bekommen
SQLSTATE[HY000] [335544379] unsupported on-disk structure for file D:\xxx\xxx.IB; found 11.2, support 11.2 Wenn ich mit interbase XE3 eine neue Datenbak erstelle, bekomme ich beim Versuch mich zu verbinden den fehler: SQLSTATE[HY000] [335544379] unsupported on-disk structure for file D:\xxx\xxx.IB; found 15.0, support 11.2 LG Stefan |
AW: Interbase X3 server via PHP
das sieht weiterhin nach einer kraut und rüben installation aus. ods 11.2 ist firebird 2.5 und ods 15 interbase xe
wichtig: hängt in deiner php/apache installation evtl ein nicht passender interbase client (gds32.dll oder fbclient.dll) bereinige am besten erst mal alle versionen dieser dateien auf deinem rechner und legt die dann die wirklich gewollte version in der suchpfad ganz nach vorne das wo path hinzeigt) bei 64 Bit maschinen und 32 Bit clients kann das noch komplizierter sein wegen syswow64 |
AW: Interbase X3 server via PHP
Zitat:
mit was die Originale Datenbank erstellt wurde, weiß ich nicht. Hatte zuerst den Fehler "found 11.2 support 11.0" da firebird 2.0 drauf war. Hab dann alle Files des firebird mit denen der Firebird 2.5 getauscht. Ich habe keine DLLs in den System32 Ordner gelegt etc. Webserver ist Win8.1 --> XAMPP, Apache 2.4, PHP 5.6.8, firebird 2.5, interbase XE3 64bit Hab in der PHP.ini: extension=php_pdo_firebird.dll extension=php_pdo_firebird.dll aktiviert.Fertig, mehr nicht! Achja, InterBase XE3 ist noch mit Testlizenz falls das was ändert LG Stefan |
AW: Interbase X3 server via PHP
Hallo,
habe heute einen Fehler lokalisieren können. Es hat der Firebird-Server statt der InterBase XE3 Server geantwortet, obwohl ich das Port in der firebird.conf auf 3051 geändert hatte. Habe den Prozess firebird Server nun einfach gekillt und ich bekomme nun eine andere Fehlermeldung, der ich aber auch nicht Herr werde. bei PDO: SQLSTATE[HY000] [335544472] Your user name and password are not defined. Ask your database administrator to set up a Firebird login. wenn ich es mittels ibase_connect() versuche: ibase_connect(): Your user name and password are not defined. Ask your database administrator to set up a Firebird login. Bitte um weiterer Mithilfe lg Stefan |
AW: Interbase X3 server via PHP
Was die Fehlermeldung bedeutet, ist dir aber schon irgendwie klar, oder? Wenn nicht, sag ich's dir nochmal:
Der Username und das Passwort sind nicht definiert. Das bedeutet, daß deine Datenbank mit einer Username-Password-Kombination angelegt (oder restored) wurde, die dein Interbase-Server nicht kennt. Es gibt aber wie in Firebird auch eine Default-Kombination, wie man z.B. ![]() User ID: SYSDBA Password: masterkey Da ich Interbase nicht verwende – es gibt ja den kostenlosen Firebird-Server –, weiß ich nicht, wie man hier einen neuen User anlegt. Wenn du jedoch in deiner Anwendung die beiden Properties für User und Password entsprechend änderst, sollte sich die Datenbank damit öffnen lassen. Wie man die Default-Einstellungen ändert, ![]() gsec –user sysdba –password masterkey modify sysdba –pw newpassword Ansonsten kann ich dir nur empfehlen, ![]() ![]() ![]() ![]() PART I: GETTING STARTED CREATING A NEW USER sehr genau beschrieben, wie man einen neuen Server-User anlegt. Das alles hättest du auch leicht selbst herausfinden können. |
AW: Interbase X3 server via PHP
[SARKASMUS]Herzlichen Dank für diese Antwort, wie konnte ich nur googlen vergessen.....[/SARKASMUS]
Die Dinge bin ich alle durch! Habe es mit default PW versucht, neue Benutzer angelegt und es probiert..... vergebens. Mit der Console kann ich connecten, in der Datenbank werkeln etc. Via PDO oder InterBase-Funktionen für PHP will es nicht. Aber Danke für den Hinweis! glg Stefan |
AW: Interbase X3 server via PHP
Zitat:
![]() Zitat:
![]() Was ist PDO? Wenn du Google mit den Begriffen ![]() Wäre dein Problem vielleicht besser in einem PHP-Forum aufgehoben? Hat ja mit Delphi eigentlich nichts zu tun ... |
AW: Interbase X3 server via PHP
ich bin mal so frech zu behaupten, das ich dir durchaus weiterhelfen könnte und noch diverse Sachen wüsste, die du prüfen solltest, hab aber ganz ehrlich gesagt kein Bock mehr, das in diesem Forum kostenlos zu erledigen.
Warum? Tja, wenn man konstruktive Vorschläge ignoriert, ob von mir, von Perlsau oder von wem auch immer, zum Beispiel auch mal die eigene Kiste zu bereinigen oder (wie das wohl fast jeder andere hier im Forum machen würde) deine Chaos Installation mal in einer neuen VM Schritt für Schritt aufzusetzen, um das bestehende Chaos als Ursache zu vermeiden, dann muss man damit leben, das die Antworten hier ausbleiben. Du hast entgegen deiner Aussage den Fehler nicht lokalisiert, sondern nur eine Teil deines Fehlers behoben. Ob du das Problem für deinen Arbeitgeber lösen musst oder ob es ein privates Projekt ist, weiss ich nicht. Wenn es zum Beispiel um private Projekte für einen Sportverein oder für die eigene Ausbildung geht, dann sind die meisten da sehr nachsichtig. Bisher kennt man Beiträge von dir nur in diesem Thread und dafür, das du scheinbar mit deiner Aufgabe überfordert bist, ist es denkbar unglücklich, einem derart geduldigen Menschen wie Perlsau auch noch mit Sarkasmus zu kommen. Mach erst mal deine Hausaufgaben ... |
AW: Interbase XE3 server via PHP
Ohha, dass wollte ich mit meinem "Sarkasmus" nicht erreichen. Ich gebe auch zu das Post von Perlsau wahrscheinlich in den falschen Hals bekommen zu haben. Wahrscheinlich deshalb, weil er mir Default-User und Kennwort nennt, nachdem es in meinem ersten Post 2mal und in einem weiteren Post nochmals vorkommt.
Zum Thema Installation aufräumen: auch das habe ich mehrfach hinter mir, meine letzte Vorgehensweise: Interbase XE3 32bit installiert XAMPP installiert Firebird 2.5 heruntergeladen und in c:/firebird/ entpackt in der PHP.ini "extension=php_interbase.dll" aktiviert/einkommentiert Pfad um c:/firebird/bin/ erweitert Hab ich was vergessen? Ich sehe da jetzt nicht was da Kraut und Rübe ist, lasse mich aber gerne belehren. Ja, es geht um ein kommerzielles Projekt. Ich möchte Daten von einer Fremden Applikation, die InterBase XE3 als Server nutzt mit meiner synchronisieren. Ich habe noch kein Angebot erstellt, da ich zuerst testen wollte ob ich überhaupt mittels PHP auf den InterBase XE3 Server kann. Und da stehe ich nun an. Ich bin gerne bereit für Hilfe auch zu zahlen, PN an mich! LG Stefan |
AW: Interbase XE3 server via PHP
Warum FireBird, wenn Du Interbase verwenden willst? Der FireBird-Installer überschreibt die gds32.dll im System ( wenn man den Haken nicht entfernt). Das würde auch Deinen Fehler erklären.
|
AW: Interbase XE3 server via PHP
Zitat:
Zitat:
Zitat:
Dasselbe gilt für den Begriff "Default-User". Nur mal so als Anmerkung und als Hinweis entweder auf mangelnde Aufmerksamkeit oder mangelnde Aufrichtigkeit. Ansonsten, wenn diese zweite unwahre Behauptung zugetroffen hätte, hätte ich einfach erwidert, daß ich durchaus verstehe, wenn man verärgert ist, nachdem man stunden- oder tagelang an einem einzigen Problem herumprobiert hat, ohne zum Ziel zu gelangen. Aber keiner hier kann was für diesen Ärger, den du empfindest, und daher solltest du dich auch an keinem der Leute hier, die dir lediglich zu helfen versuchen, abzureagieren versuchen. Ansonsten stehst du sehr bald alleine da und man antwortet einfach nicht mehr auf deine Anfragen um Unterstützung. Vielleicht sollte ich aber auch sagen: Der Fehler liegt garantiert nicht an dir, du hast alles richtig gemacht, der Fehler ist wahrscheinlich ein Bug irgendwo bei Interbase oder PHP oder was weiß ich :glaskugel: (das ist keine Anspielung auf den gleichnamigen User, denn der kann auch nichts dafür) Irgendwo hab ich noch das T-Shirt mit der Aufschrift "Ich bin immer" vornedrauf, hinten steht "an allem schuld". Kann ich dir gerne mal zuschicken, ich brauch's nicht mehr :twisted: Ich würde dir weiterhin empfehlen, dich einmal in diversen PHP-Foren umzusehen und dort diesen Fehler zu posten. Ich wette, dort erhältst du ruckzuck den richtigen Hinweis, der dein Problem lösen wird. Ich mach das auch nicht anders: Fragen zu Windows oder Viren oder HTML oder Java stelle ich nicht hier, nicht mal Fragen zu Lazarus bzw. CodeTyphon, dafür gibts einfach besser geeignete Foren. Das hat sich aus meiner Sicht bewährt, auch wenn manche hier sogar nachfragen, welche Maus oder welche Tastatur sie sich kaufen sollen (ist vielleicht aber auch nur Foren-Spam) oder gar politische Diskussionen zu beginnen versuchen (mach ich auch woanders). Achso, bevor ich's vergesse: Ich werte dein Posting als Entschuldigung und nehme diese gerne an, du hast es nicht böse gemeint und warst eigentlich nur gefrustet, das hat dir dein Urteilsvermögen leicht getrübt. Kann vorkommen, nichts für ungut. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz