finde den fehler (nicht)...

Hier geht es um die Programmierung von Opencaching.de - User mit Erfahrungen im Bereich PHP, MySQL, HTML, JavaScript, CSS werden hier ständig gesucht
Antworten
Benutzeravatar
bohrsty
Administrator
Administrator
Beiträge: 1367
Registriert: 30.03.2012, 22:54

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...

Code: Alles auswählen

( ! ) 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)

Bild
HellstormDe

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
Benutzeravatar
bohrsty
Administrator
Administrator
Beiträge: 1367
Registriert: 30.03.2012, 22:54

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)

Bild
Benutzeravatar
bohrsty
Administrator
Administrator
Beiträge: 1367
Registriert: 30.03.2012, 22:54

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:

Code: Alles auswählen

	$sql_replacements['db'] = "`$dbname`";
	$sql_replacements['tmpdb'] = "`$tmpdbname`";
falls das problem mal jemandem begegnen sollte...
gruss Nils (bohrsty)

Bild
Antworten