Autor Thema: finde den fehler (nicht)...  (Gelesen 968 mal)

Offline bohrsty

  • Administrator
  • Normal
  • *****
  • Beiträge: 1359
  • Teamleiter Technik
finde den fehler (nicht)...
« am: 18. Oktober 2012, 21:39:15 »
wenn ich bei mir in der "entwicklungsumgebung" die search.php aufrufe, wird daraus folgende php-fehlermeldung, ich kann aber nicht erkennen, was das problem ist...

( ! ) Fatal error: Call to a member function t() on a non-object in /mnt/www/oc-server3/htdocs/lib/common.inc.php on line 1170
Call Stack
# Time Memory Function Location
1 0.0093 664408 {main}( ) ../search.php:0
2 0.0151 880472 require_once( '/mnt/www/oc-server3/htdocs/lib/common.inc.php' ) ../search.php:27
3 0.1027 1110288 require( '/mnt/www/oc-server3/htdocs/lib/auth.inc.php' ) ../common.inc.php:196
4 0.1111 1163216 require( '/mnt/www/oc-server3/htdocs/lib/login.class.php' ) ../auth.inc.php:19
5 0.1112 1163456 login->login( ) ../login.class.php:42
6 0.1114 1164352 login->verify( ) ../login.class.php:72
7 0.1115 1165120 sql( ) ../login.class.php:120
8 0.1115 1166160 sql_internal( ) ../clicompatbase.inc.php:285
9 0.1135 1179744 sql_error( ) ../clicompatbase.inc.php:478
10 1.7650 1186648 tpl_errorMsg( ) ../clicompatbase.inc.php:517
11 1.7651 1187136 tpl_BuildTemplate( ) ../common.inc.php:840
12 1.7935 1229016 include( '/mnt/www/oc-server3/htdocs/lang/de/expressions.inc.php' ) ../common.inc.php:500
13 1.7935 1229128 t( ) ../expressions.inc.php:21

ich sollte vielleicht noch mal dazu sagen, dass ich nicht die vm nutze, sondern das ganze local auf meinem notebook mit php5.4...

irgendjemand eine idee?
gruss Nils (bohrsty)


Offline HellstormDe

  • Nano
  • **
  • Beiträge: 55
    • Hellstorm.De - Astronomie & Visualisierung
Re: finde den fehler (nicht)...
« Antwort #1 am: 19. Oktober 2012, 18:09:42 »
Hmm... da ich auch noch nicht den Rundum-Blick durch den Code habe, würde ich erstmal anfangen zu testen, ob das t() in Zeile 21 in expressions.inc.php überhaupt irgendein "Ding" ist z.B. mit function_exists, class_exists und method_exists. Wenn alle drei von den Dingern false zurückliefern, ist t() wohl nicht definiert.

Ist zwar nicht des Rätsels lösung, aber hilft schon mal weiter. Wenn irgendeine Funktion true zurückgibt, weißt du immerhin schon mal ob es sich um eine methode, klasse oder funktion handelt. :D
Früher war alles besser, auch die Zukunft. (Harald Lesch) || http://www.hellstorm.de/ - Astronomie & Visualisierung

Offline bohrsty

  • Administrator
  • Normal
  • *****
  • Beiträge: 1359
  • Teamleiter Technik
Re: finde den fehler (nicht)...
« Antwort #2 am: 19. Oktober 2012, 18:36:14 »
ich habs auf der zugfahrt mal analysiert, hat mit sonderzeichen in meinem datenbanknamen zu tun...

ich schreibe es noch mal ausfuehrlich, wenn ich wieder am rechner sitze...
gruss Nils (bohrsty)


Offline bohrsty

  • Administrator
  • Normal
  • *****
  • Beiträge: 1359
  • Teamleiter Technik
Re: finde den fehler (nicht)...
« Antwort #3 am: 20. Oktober 2012, 14:39:49 »
das "problem" ist, dass in einigen sql-querys der platzhalter &db etc. verwendet werden... diese werden in den sql() und sql_internal() methoden durch die werte aus dem array $sql_replacements ersetzt (leider unquoted) ;) wenn man wie ich "oc-server3" als datenbanknamen verwendet, stoesst das dem mysqld sauer auf und er verweigert die arbeit, war dann zu dem etwas merkwuerdigen fehler fuehrt...
ich bin der meinung, dass die dateien "lib/settings-dist.inc.php" und "lib/settings-dev.inc.php" via git ausgecheckt werden, daher werde ich noch mal ein fix schreiben, dass die backticks in diese variablen einbaut...

die zeilen 102 und 103 sollten also folgendermassen aussehen:
$sql_replacements['db'] = "`$dbname`";
$sql_replacements['tmpdb'] = "`$tmpdbname`";
falls das problem mal jemandem begegnen sollte...
gruss Nils (bohrsty)