php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Betriebssysteme, Hardware & Netzwerk > Linux und Unix
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


Linux und Unix Forum zum Austausch von Erfahrungen, Problemen, Tips und Tricks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 12-12-2011, 16:23
Jiraiya
 Registrierter Benutzer
Links : Onlinestatus : Jiraiya ist offline
Registriert seit: Jul 2011
Beiträge: 59
Jiraiya befindet sich auf einem aufstrebenden Ast
Standard Problem bei Zugriff vom Ubuntu-Server via PHP-Scripte auf FBDatenbank(Windows)

Hallo
Ausgangssitution:
man soll über I-net(URL) PHP-Scipte ausführen die auf eine local vorliegende Datenbank zugreifen.
Die PhP-Scripte liegen auf einem Ubuntu-Hetzner-Server. Dieser von mir und einem Kollegen vor kurzem auf den aktuellesten Stand gebracht. Die Scipte versuchen über pdo_firebird auf die Datenbank zu zugreifen.
Die Datenbank liegt momentan noch lokal auf meinem Laptop und soll später wenn alles zuverlässigläuft auf unseren lokalen Server umziehen.

Wenn ich die Datenbank auf dem Hetzner lagere und von dort aus die angepassten scripte ausführe funktioniert alles. Die Ausgabe erfolgt wie gewünscht.

Wenn ich die Datenbank von meinem Laptop aus ausführe oder mit IBExpert öffne gibt es auch keine Probleme(ersteres nehme ich an da ich sie hier geschrieben habe, vor knapp einem viertel Jahr).

Das Problem liegt aber bei der eigentlichen Idee:
Steuer ich von hier aus über den Mozilla die URL mit den parametern an und gebe als verbindung meine Lokale Datenbank in den scripten(Scripte liegen aufm dem Hetzner) an so scheitert das ganze und schmeist mir folgende Fehlermeldung raus:

Zitat:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [335544379] unsupported on-disk structure for file C:\FIRMAPLAY_funktioniert.GDB; found 32779.10, support <Missing arg #4 - possibly status vector overflow>.<Missing arg #5 - possibly status vector overflow>' in /var/www/test/getcoworkerlist.php:30 Stack trace: #0 /var/www/test/getcoworkerlist.php(30): PDO->__construct('firebird:dbname...', 'SYSDBA', 'masterkey') #1 {main} thrown in /var/www/test/getcoworkerlist.php on line 30
Ich hab nun schon versucht den Pfad oder die verbindung zu ändern was man an dem Script durch die Kommentare sieht, aber das führt nur zur gescheiterten Verbindungsherstellung.

Mein Script:
PHP-Code:
<html>
        <head>
                <title>
                        getcoworkerlist
                </title>
        </head>
        <body>
                <?php
                        
//mittels url wird die variable ï¿½bergeben

                                /*      type kann folgende Inhalte haben:
                                        offline(Wert 0)
                                        free(Wert 1)
                                        busy(Wert 2)
                                */
                        
$aid=$_GET["aid"];
                        
//$ausnahme_datum= "1900-01-01 00:00:00";

                        
require_once("befehle.php");
                        
//require_once("connection.php");

                        //define("DB_HOST", "10.8.0.6");
                        //define("DB_USER", "SYSDBA");
                        //define("DB_PASSWORD", "masterkey");
                        //define("DB_NAME","C:\\Apache2.2\\htdocs\\FIRMAPLAY_funktioniert.GDB");

                        //$database = new PDO("firebird:dbname=" . DB_NAME . ":" . DB_HOST . "","" . DB_USER . "", "" . DB_PASSWORD . "");
                        //$database = new PDO ($str_conn, "SYSDBA", "masterkey");
                        //$str_conn = "firebird:dbname=10.8.0.6:C:\\FIRMAPLAY_funktioniert.gdb;";
                        
$database = new PDO("firebird:dbname=10.8.0.6:C:\\FIRMAPLAY_funktioniert.GDB","SYSDBA","masterkey");
                        
$database->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);

                        
db_abfrage($database);

                        switch(
$_GET["servicestatus"]){
                                case 
"offline":
                                        
$sql="SELECT * FROM VW_SERVICE WHERE (\"SERVICEAID\"=$aid) AND (\"SERVICESTATUS\"=0)";
                                        break;

                                case 
"free":
                                        
$sql="SELECT * FROM VW_SERVICE WHERE (\"SERVICEAID\"=$aid) AND (\"SERVICESTATUS\"=1)";
                                        break;

                                case 
"busy":
                                        
$sql="SELECT * FROM VW_SERVICE WHERE (\"SERVICEAID\"=$aid) AND (\"SERVICESTATUS\"=2)";

                                case 
"freeandbusy":
                                        
$sql="SELECT * FROM VW_SERVICE WHERE (\"SERVICEAID\"=$aid) AND ((\"SERVICESTATUS\"=1) OR (\"SERVICESTATUS\"=2))";
                                        break;

                                case 
"all":
                                        
$sql="SELECT * FROM VW_SERVICE WHERE (\"SERVICEAID\"=$aid) AND (\"SERVICESTATUS\">=0)";
                                        break;
                        }

                        echo 
'</br></br>';
                        foreach(
$database->query($sql) as $key => $entry)
                                {
                                        echo (
'"' $entry['ID'] . '", "' $entry['MITARBEITERNAME'] .'", "' $entry['SERVICEIP'] .'"; ');
                                };
                        
?>
        </body>
</html>
Laut Recherche und ratschlägen von kollegen soll es an einem Versionsunterschied zwischen Datenbank und Client liegen. Dabei frag ich mich aber warum ich sie dann in den einzelnen Systemen starten kann.
Auf dem Hetzner läuft aktuell pdo_firebird in der version 2.5. auf meinem Laptop läuft Firebird 2.5. Die datenbank hab ich bis jetzt immer mit Firebird 2.0 in der Datenbank registriert.
Wichtig wäre vllt auch noch das ich einen OPENVpn Tunnel zwischen dem Server und dem Lokalen Laptop laufen lasse.
Die funktioniert eigentlich reibungslos.

Ich wäre sehr dankbar für denkanstöße oder sogar lösungen.

Beste Grüße

Geändert von Jiraiya (12-12-2011 um 16:38 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 19-12-2011, 22:56
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von Jiraiya Beitrag anzeigen
...

Wenn ich die Datenbank auf dem Hetzner lagere und von dort aus die angepassten scripte ausführe funktioniert alles. Die Ausgabe erfolgt wie gewünscht.
Welchen DSN verwendest du dort? Irgendwie kommt der, den du im Quelltext angegeben hast, nicht ganz koscher vor.

Zitat:
Wenn ich die Datenbank von meinem Laptop aus ausführe oder mit IBExpert öffne gibt es auch keine Probleme(ersteres nehme ich an da ich sie hier geschrieben habe, vor knapp einem viertel Jahr).
Gleiche Fragestellung: Was unterscheidet den hierbei verwendeten DSN vom im Beispiel-Code angebenen?

Zitat:
Steuer ich von hier aus über den Mozilla die URL mit den parametern an und gebe als verbindung meine Lokale Datenbank in den scripten(Scripte liegen aufm dem Hetzner) an so scheitert das ganze und schmeist mir folgende Fehlermeldung raus: ...
Mein Script:
PHP-Code:
// ...
$database = new PDO(
    
"firebird:dbname=10.8.0.6:C:\\FIRMAPLAY_funktioniert.GDB",
    
"SYSDBA",
    
"masterkey"
);
// ... 
Bei den Beispiel-DSNs im Handbuch werden dbname= und host= getrennt angegeben (oder gar kein host, aber das nützt dir hier ja nichts). Ich frage mich, was passiert, wenn du einen Phantasie-Pfad angibst, der nicht existiert. Kommt dann die gleiche Exception? Das wäre ein Indiz, dass der Client den Datenbankserver nicht findet.

Zitat:
Laut Recherche und ratschlägen von kollegen soll es an einem Versionsunterschied zwischen Datenbank und Client liegen.
So sagt die Fehlermeldung.[0] Aber siehe meine letzte Frage.

Zitat:
Dabei frag ich mich aber warum ich sie dann in den einzelnen Systemen starten kann.
Auf dem Hetzner läuft aktuell pdo_firebird in der version 2.5. auf meinem Laptop läuft Firebird 2.5. Die datenbank hab ich bis jetzt immer mit Firebird 2.0 in der Datenbank registriert. ...
Hmm, der DB-Client auf dem Hetzner-Server hat die gleiche Versionsnummer wie der DB-Server dort (2.5). Beide verstehen sich. Wenn jetzt der Client von dort auf deinen Laptop zugreift und dort einen Server vorfindet, dessen Fileformat er nicht versteht, dann kommt mir das auch komisch vor. Was ich nicht verstehe (ich kenne Firebird nur von der Online-Dokumentation) ist, wieso ein Dateisystem-Pfad zu einer Datei ('C:\...') angegeben werden muss. Der Host und der Name der Datenbank sollten doch reichen ...

--
[0] Peinlich: Gerade habe ich auf firebirdfaq.org diese Fehlermeldung gesehen:
Zitat:
Warning: mysql_connect(): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111) in .../html/firebirdfaq.org/ads/connect.php on line 2 Neuspesna konekcija na server.
(Hervorhebung von mir)

Geändert von fireweasel (19-12-2011 um 23:04 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 20-12-2011, 10:18
Jiraiya
 Registrierter Benutzer
Links : Onlinestatus : Jiraiya ist offline
Registriert seit: Jul 2011
Beiträge: 59
Jiraiya befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Welchen DSN verwendest du dort? Irgendwie kommt der, den du im Quelltext angegeben hast, nicht ganz koscher vor.
Ich weiss der wirkte auch komisch. War aber der einzige zumindest soweit funktionierte. Hab aber auch die anderen Formulierungen ausprobiert(sieht man glaub ich am script). Beim Zugriff auf eine Lokale Datenbank die aufm Hetzner liegt hätte ich die DSN wie folgt formuliert:

PHP-Code:
$database = new PDO ("firebird: host = localhost; dbname= /var/www/cms/FIRMAPLAY_funktioniert.gdb","SYSDBA""masterkey"); 
Diesen hab ich eben auch nochmal getestet und der funktioniert. Wenn ich nur den namen der Datenbank angebe, dann verweist die Exception darauf, das es keine erreichbare datenbank ist.

Zitat:
Gleiche Fragestellung: Was unterscheidet den hierbei verwendeten DSN vom im Beispiel-Code angebenen?
Auf meinem Laptop hab ich es nochmal anders realisiert. Aber funktioniert auch. Habs eben nochmal getestet. hier das script:

PHP-Code:
define("DB_HOST""localhost");
            
define("DB_USER""SYSDBA");
            
define("DB_PASSWORD""masterkey");
            
define("DB_NAME","C:\\Apache2.2\\htdocs\\FIRMAPLAY.GDB");
            
$ausnahme_datum"1900-01-01 00:00:00";
            
$aid=$_GET["aid"];        
            require_once(
"befehle.php");
            
$database = new PDO("firebird:dbname=" DB_NAME ";host=" DB_HOST "","" DB_USER """" DB_PASSWORD ""); 
Wenn ich nach dem Hetznerbeispiel oben meine DSN ausrichte, dann wird der Pfad als Host erkannt auch eigenartig:
Script:
PHP-Code:
$database = new PDO ("firebird: host = 10.8.0.6; dbname= C:\\FIRMAPLAY_funktioniert.gdb","SYSDBA""masterkey"
Fehlermeldung:
Zitat:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [335544721] Unable to complete network request to host "C".' in /var/www/test/getcoworkerlist.php:32 Stack trace: #0 /var/www/test/getcoworkerlist.php(32): PDO->__construct('firebird: host=...', 'SYSDBA', 'masterkey') #1 {main} thrown in /var/www/test/getcoworkerlist.php on line 32
Zitat:
Bei den Beispiel-DSNs im Handbuch werden dbname= und host= getrennt angegeben (oder gar kein host, aber das nützt dir hier ja nichts). Ich frage mich, was passiert, wenn du einen Phantasie-Pfad angibst, der nicht existiert. Kommt dann die gleiche Exception? Das wäre ein Indiz, dass der Client den Datenbankserver nicht findet.
Wenn ich das tue, verändert sich auch die Fehlermeldung in(der Fehler tritt ebenso auf mit einem backslash zwischen bla und FIRMA_funktioniert.GDB):
PHP-Code:
$database = new PDO
    
"firebird:dbname=10.8.0.6:C:\\bla\\FIRMAPLAY_funktioniert.GDB"
    
"SYSDBA"
    
"masterkey" 
); 
Fehlermeldung:
Zitat:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [335544344] I/O error during "CreateFile (open)" operation for file "C:\bla\FIRMAPLAY_funktioniert.GDB"' in /var/www/test/getcoworkerlist.php:30 Stack trace: #0 /var/www/test/getcoworkerlist.php(30): PDO->__construct('firebird:dbname...', 'SYSDBA', 'masterkey') #1 {main} thrown in /var/www/test/getcoworkerlist.php on line 30
Also scheint er den Datenbankserver schonmal zufinden oder?
Zitat:
Was ich nicht verstehe (ich kenne Firebird nur von der Online-Dokumentation) ist, wieso ein Dateisystem-Pfad zu einer Datei ('C:\...') angegeben werden muss. Der Host und der Name der Datenbank sollten doch reichen ...
Ich denke persönlich das wird daran liegen das ich kein Alias eingetragen habe.

Den Beitrag den du gefunden hast, konnte ich nicht mehr erreichen oder wieder finden.

Danke für deine Antwort.

Geändert von Jiraiya (20-12-2011 um 10:57 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 30-12-2011, 14:29
Jiraiya
 Registrierter Benutzer
Links : Onlinestatus : Jiraiya ist offline
Registriert seit: Jul 2011
Beiträge: 59
Jiraiya befindet sich auf einem aufstrebenden Ast
Standard Alternativ Lösung

So ich hab nun eine "Lösung" gefunden. Allerdings war diese Ursprünglich nur als Test gedacht um zusehen, ob es denn so auch geht.
Ich habe nun die PDO_Firebird Verbindung durch eine direkte Interbase/Firebird Verbindung ersätzt. Eigentlich dachte ich das nun der selbe Fehler erneut auftauchen würde aber nein. Die Verbindung funktioniert und meine Scripte saugen vortrefflich die Daten aus der Datenbank und stellen sie da. Sowohl die Lokalen als auch die Tests über VPN funktionieren.

Damit hat sich das Thema erstmal soweit erledigt. Meine letzte Bitte an dieser Stelle: Kann mir jemand vllt noch sagen warum es so geht jedoch nicht mit der PDO-Extension? Die versionen sind ja an und für sich die selben geblieben.

Danke mal wieder im Vorraus.

Ich wünsche eine guten Rutsch ins neue Jahr.

Added: Mein PDO funktioniet mittlerweile auch. Der scheinbar hat die installtion der Interbasetreiber geholfen.

Geändert von Jiraiya (30-12-2011 um 15:35 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP Code verschlüsseln oder auf auf eigenem Server Scripte hosten francosdad PHP Developer Forum 26 20-06-2009 18:00
MySQL 5 - Probleme bei Zugriff via MyODBC auf Views White-Horse SQL / Datenbanken 0 05-09-2006 10:57
Zugriff auf Skripte vom IIS per PHP/Include Patrick_PQ Fragen zu Installation & Konfiguration (LAMP, WAMP & Co.) 3 14-04-2005 14:37
Zugriff von PHP auf externe Seiten / Server auf einmal extrem langsam > 15 s Teldan Fragen zu Installation & Konfiguration (LAMP, WAMP & Co.) 8 26-08-2004 22:12
[Problem] neue firewall -> kein access vom lan auf virtual server sirup Netzwerk & Internet 0 01-03-2004 20:52

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:31 Uhr.