Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] MDB2: Script bricht bei Connect einfach lautlos ab (https://www.delphipraxis.net/138287-%5Bphp%5D-mdb2-script-bricht-bei-connect-einfach-lautlos-ab.html)

Namenloser 6. Aug 2009 21:20


[PHP] MDB2: Script bricht bei Connect einfach lautlos ab
 
Hallo,

ich werde noch wahnsinnig :wall:. Ich versuche jetzt schon den ganzen Tag, endlich MDB2 zum Laufen zu kriegen. Mittlerweile habe ich PEAR mitsamt dem MDb2-Paket installiert bekommen.

Allerdings heißt das nicht, dass es funktioniert. Ich habe folgendes Script:

Code:
<?php
  require_once("MDB2/MDB2.php");
//  $dsn = 'mysqli://user:password@localhost/database';  
  $dsn = array(
      'phptype' => 'mysqli',
      'username' => 'user',
      'password' => 'password',
      'hostspec' => 'localhost',
      'database' => 'database',
  );
  echo "vor Connect";    
  echo MDB2::apiVersion(); // bis hier kommt es
  $mdb2 =& MDB2::singleton($dsn);        
  echo "nach Connect";      
  if (PEAR::isError($mdb2)) {   
      echo "errror";
      die($mdb2->getMessage());
  } 
?>
Leider kommt das Script nur bis zu besagter Stelle. (Ausgabe: "vor Connect2.4.1"). Danach passiert einfach überhaupt nichts mehr, bzw. die Ausgabe endet an dieser Stelle. Es gibt auch keine Fehlermeldung.

Was bitte mache ich falsch? :wall:

S2B 6. Aug 2009 22:00

Re: [PHP] MDB2: Script bricht bei Connect einfach lautlos ab
 
Was passiert denn, wenn du den apiVersion()-Aufruf auskommentierst?

Edit: Hmm, das wird wohl nicht zielführend sein... hatte mich verguckt. :drunken:

jfheins 6. Aug 2009 22:37

Re: [PHP] MDB2: Script bricht bei Connect einfach lautlos ab
 
Zitat:

Zitat von NamenLozer
Leider kommt das Script nur bis zu besagter Stelle. (Ausgabe: "vor Connect2.4.1"). Danach passiert einfach überhaupt nichts mehr, bzw. die Ausgabe endet an dieser Stelle. Es gibt auch keine Fehlermeldung.

Was bitte mache ich falsch? :wall:

Auf welchen Level ist das Error-Reporting? Wenn dus nicht weist: schreib mal an den Anfang: error_reporting(E_ALL); ;)

Und die Seite ist wirklich fertig geladen? Nicht das das Teil noch rechnet und due schon abbrichst ...

Namenloser 6. Aug 2009 23:59

Re: [PHP] MDB2: Script bricht bei Connect einfach lautlos ab
 
Danke für eure Antworten,

apiVersion war nur zum Testen, ob die Klasse richtig eingebunden wird etc, ohne passiert genau das gleiche.

Zitat:

Zitat von jfheins
Auf welchen Level ist das Error-Reporting? Wenn dus nicht weist: schreib mal an den Anfang: error_reporting(E_ALL); ;)

Das ändert leider auch nichts.

Zitat:

Zitat von jfheins
Und die Seite ist wirklich fertig geladen? Nicht das das Teil noch rechnet und due schon abbrichst ...

Die Seite ist zu 100% fertig geladen.

Das macht das ganze leider nicht gerade einfacher :(

mkinzler 7. Aug 2009 05:34

Re: [PHP] MDB2: Script bricht bei Connect einfach lautlos ab
 
Lass mal das & weg

Namenloser 7. Aug 2009 11:42

Re: [PHP] MDB2: Script bricht bei Connect einfach lautlos ab
 
Zitat:

Zitat von mkinzler
Lass mal das & weg

Habe ich auch schon probiert, ebenso wie die gesamte zuweisung zu entfernen, gebracht hat es leider nichts. Ich habe auch schon erfolglos singleton gegen factory ausgetauscht, aber intern ruft singleton auch nur factory auf, also war nichts anderes zu erwarten.

Valle 7. Aug 2009 12:24

Re: [PHP] MDB2: Script bricht bei Connect einfach lautlos ab
 
Hi,

hast du den Installationsanweisungen gemäß Dokumentation gefolgt? Wenn ich mich nicht irre muss man für jede Datenbank auch einen dazugehörigen DB-Treiber installieren, ist davon aus mindestens einer vorhanden? Was passiert wenn du mal andere Daten benutzt, zB eine andere Datenbank oder gar einen anderen Treiber? Wie sieht es aus, wenn du den DSN wie im Kommentar als String übergibst? Steht evtl. im Apache- oder Sys-Log was? Findet eine Connection zu MySQL statt (siehe MySQL-Log)? Kannst du das Script mal über die Kommandozeile ausführen? Dafür brauchst du das Paket php5-cli unter Debian / Ubuntu. Bei Source-Installation / Gentoo müsste das auch so gehen. Manchmal sieht man da Meldungen, die man im Apache nicht sieht.

Btw: Die Referenz-Zuweisung mittels =& ist in PHP5 übrigens veraltet und wirft bei error_reporting E_ALL einen E_STRICT Error. Da du diesen ja scheinbar auch nicht siehst, scheint der Methodenaufruf von singleton() ja schon nicht mehr zurück zu kehren.

Mit freundlichen Grüßen,

Valle

omata 7. Aug 2009 12:34

Re: [PHP] MDB2: Script bricht bei Connect einfach lautlos ab
 
E_ALL reicht auch nicht...
Code:
error_reporting(E_ALL | E_STRICT);

Namenloser 7. Aug 2009 13:18

Re: [PHP] MDB2: Script bricht bei Connect einfach lautlos ab
 
Hallo

Zitat:

Zitat von Valle
hast du den Installationsanweisungen gemäß Dokumentation gefolgt? Wenn ich mich nicht irre muss man für jede Datenbank auch einen dazugehörigen DB-Treiber installieren, ist davon aus mindestens einer vorhanden?

Ja, diese Anleitung habe ich gelesen. Die Treiber sind auch installiert (mysql und mysqli), wenn es nicht so wäre soltle vor allem eine entsprechende Fehlermeldung kommen.
Zitat:

Zitat von Valle
Was passiert wenn du mal andere Daten benutzt, zB eine andere Datenbank oder gar einen anderen Treiber? Wie sieht es aus, wenn du den DSN wie im Kommentar als String übergibst?

Ich habe es bisher mit mysql und mysqli versucht, mit einer anderen Datenbank noch nicht. Den DSN hatte ich zu Beginn als string übergeben. Erst als das nicht klappte, habe ich es mit dem Array probiert.
Zitat:

Zitat von Valle
Steht evtl. im Apache- oder Sys-Log was? Findet eine Connection zu MySQL statt (siehe MySQL-Log)?

Also ich benutze Lighttpd, und in dessen Serverlog konnte ich nichts finden. Wo finde ich denn die Logs von MySQL?
Zitat:

Zitat von Valle
Kannst du das Script mal über die Kommandozeile ausführen? Dafür brauchst du das Paket php5-cli unter Debian / Ubuntu. Bei Source-Installation / Gentoo müsste das auch so gehen. Manchmal sieht man da Meldungen, die man im Apache nicht sieht.

Okay, also das brignt mich schon mal einen Schritt weiter. (Der Server läuft übrigens unter Windows, auf meinem Hauptrechner. Der Grund ist, dass ich meine Webseite überarbeiten will und dafür gerne einen lokalen Server zum Testen hätte. Außerdem nutze ich das ganz gerne, um Dateien zu verschicken)

Die Ausgabe über die Kommandozeile ist folgende (damit isch niemand wundert, ich habe die Ausgabe des Scripts aus Gründen der Übersichtlichkeit leicht verändert):
Code:
PHP Deprecated: Assigning the return value of new by reference is deprecated in C:\Program Files\Lighty2Go\PHP\PEAR\MDB2\MDB2.php on line 390
PHP Strict Standards: Redefining already defined constructor for class MDB2_Driver_Common in C:\Program Files\Lighty2Go\PHP\PEAR\MDB2\MDB2.php on line 1310
PHP Deprecated: Assigning the return value of new by reference is deprecated in C:\Program Files\Lighty2Go\PHP\PEAR\MDB2\MDB2.php on line 1885
PHP Deprecated: Assigning the return value of new by reference is deprecated in C:\Program Files\Lighty2Go\PHP\PEAR\MDB2\MDB2.php on line 2572
PHP Deprecated: Assigning the return value of new by reference is deprecated in C:\Program Files\Lighty2Go\PHP\PEAR\MDB2\MDB2.php on line 2595
PHP Deprecated: Assigning the return value of new by reference is deprecated in C:\Program Files\Lighty2Go\PHP\PEAR\MDB2\MDB2.php on line 2940
PHP Strict Standards: Redefining already defined constructor for class MDB2_Result_Common in C:\Program Files\Lighty2Go\PHP\PEAR\MDB2\MDB2.php on line 3377
PHP Strict Standards: Redefining already defined constructor for class MDB2_Row in C:\Program Files\Lighty2Go\PHP\PEAR\MDB2\MDB2.php on line 3850
PHP Strict Standards: Redefining already defined constructor for class MDB2_Statement_Common in C:\Program Files\Lighty2Go\PHP\PEAR\MDB2\MDB2.php on line 3907
PHP Strict Standards: Redefining already defined constructor for class MDB2_Module_Common in C:\Program Files\Lighty2Go\PHP\PEAR\MDB2\MDB2.php on line 4191
[color=red]
PHP Warning: include_once(PEAR5.php): failed to open stream: No such file or directory in C:\Program Files\Lighty2Go\PHP\PEAR\PEAR.php on line 766
PHP Warning: include_once(): Failed opening 'PEAR5.php' for inclusion (include_path='.;c:\program files\lighty2go\php\pear') in C:\Program Files\Lighty2Go\PHP\PEAR\PEAR.php on line 766
PHP Strict Standards: Declaration of MDB2_Driver_Common::raiseError() should be compatible with that of PEAR::raiseError() in C:\Program Files\Lighty2Go\PHP\PEAR\MDB2\MDB2.php on line 990
[/color]
** vor Connect
PHP Strict Standards: Non-static method MDB2::apiVersion() should not be called statically in D:\htdocs\beta\lib\connect.php on line 18
** 2.4.1
PHP Strict Standards: Non-static method MDB2::singleton() should not be called statically in D:\htdocs\beta\lib\connect.php on line 19
PHP Strict Standards: Non-static method MDB2::parseDSN() should not be called statically in C:\Program Files\Lighty2Go\PHP\PEAR\MDB2\MDB2.php on line 484
PHP Strict Standards: Non-static method MDB2::factory() should not be called statically in C:\Program Files\Lighty2Go\PHP\PEAR\MDB2\MDB2.php on line 500
PHP Strict Standards: Non-static method MDB2::parseDSN() should not be called statically in C:\Program Files\Lighty2Go\PHP\PEAR\MDB2\MDB2.php on line 376
PHP Strict Standards: Non-static method MDB2::loadClass() should not be called statically in C:\Program Files\Lighty2Go\PHP\PEAR\MDB2\MDB2.php on line 385
PHP Strict Standards: Non-static method MDB2::classExists() should not be called statically in C:\Program Files\Lighty2Go\PHP\PEAR\MDB2\MDB2.php on line 327
PHP Strict Standards: Non-static method MDB2::fileExists() should not be called statically in C:\Program Files\Lighty2Go\PHP\PEAR\MDB2\MDB2.php on line 335
PHP Strict Standards: Non-static method MDB2::raiseError() should not be called statically in C:\Program Files\Lighty2Go\PHP\PEAR\MDB2\MDB2.php on line 340
PHP Strict Standards: Non-static method PEAR::raiseError() should not be called statically in C:\Program Files\Lighty2Go\PHP\PEAR\MDB2\MDB2.php on line 574
PHP Strict Standards: Non-static method MDB2::errorMessage() should not be called statically, assuming $this from incompatible context in C:\Program Files\Lighty2Go\PHP\PEAR\MDB2\MDB2.php on line 972
PHP Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\Program Files\Lighty2Go\PHP\PEAR\MDB2\MDB2.php on line 743
[color=red]
PHP Fatal error: Class 'PEAR5' not found in C:\Program Files\Lighty2Go\PHP\PEAR\PEAR.php on line 878
[/color]
[/color]
[edit]
Okay, also da fehlte tatsächlich die PEAR5.php im PEAR-Verzeichnis. Ich muss dazu sagen, dass ich PEAR manuell installiert habe, weil das Installer-Script nicht funktionierte. Jetzt wird zumindest eine Fehlermeldung ausgegeben, mit der man etwas mehr anfangen kann:
Code:
&#65279;** vor Connect
**2.4.1
** nach Connect
** Error
MDB2 Error: not found
Die frage ist jetzt allerdings: Heißt das, die Klasse MDB2 wurde nicht gefunden, der Treiber wurde nicht gefunden, oder die Datenbank wurde nicht gefunden? :gruebel:
[/edit]

Valle 7. Aug 2009 13:23

Re: [PHP] MDB2: Script bricht bei Connect einfach lautlos ab
 
Da scheint was mit deiner PEAR-Installation nicht zu stimmen. Überprüfe mal den include_path und ob alles wichtigen PEAR-Dateien wirklich vorhanden sind. Ansonsten kann ich dir an dieser Stelle nicht mehr viel helfen, da ich weder Windows noch PEAR benutze. :|

Mit freundlichen Grüßen,

Valle


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:11 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz