Fehlermeldung could not get translations

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
steve04
Beiträge: 46
Registriert: Fr 5. Nov 2010, 20:26
Kontaktdaten:

Fehlermeldung could not get translations

Beitrag von steve04 »

Hallo,

habe Contenido 4.9 auf meinem Server nur unter Ausschaltung der Versionsprüfung PHP installiert bekommen, wie in
http://forum.contenido.org/viewtopic.ph ... 97#p159797
beschrieben. Die Installation mit Versionsprüfung wurde verweigert, obwohl lt. phpinfo auf dem Server php 5.2.12 installiert ist.

Nach Login im Backend bekomme ich nach fast jedem Klick ein Fenster eingeblendet mit der Fehlermeldung:

Code: Alles auswählen

"could not get translations"
Im Logfile findet sich pro Klick der Eintrag:

Code: Alles auswählen

Call to undefined function json_encode() in /srv/www/pfad/zu/contenido/classes/class.ajax.php on line 306
Die phpinfo gibt unter der Abteilung "additional .ini files parsed" folgenden Wert aus:

Code: Alles auswählen

/etc/php5/5.2.12/ext/json.ini
Kann mir jemand sagen, ob sich das beheben lässt oder ob ich etwas auf dem Server nachinstallieren lassen muss?
Danke!

Stephan
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Fehlermeldung could not get translations

Beitrag von xmurrix »

Hallo steve04,
...Die Installation mit Versionsprüfung wurde verweigert, obwohl lt. phpinfo auf dem Server php 5.2.12 installiert ist...
CONTENIDO 4.9 hat als Mindestanforderung PHP 5.2.3 und deine Version ist 5.2.12. Auch wenn das CMS unter PHP 5.2.12 größtenteils funktioniert, musst du davon ausgehen, dass es doch irgendwo einen Fehler verursachen wird.
Nachtrag:
Die Aussage von oben ist falsch, 5.2.12 ist größer als 5.2.3!

Zum Thema "Call to undefined function json_encode()":
Vermutlich wird eine json.ini von PHP geparst, aber das bedeutet nicht, dass PHP mit der JSON-Unterstützung kompiliert wurde oder dass das JSON-Package aktiv ist. Bei dir ist JSON nicht vorhanden, darum die Fehlermeldung.

Die Fehlermeldung "could not get translations" kommt daher, da per AJAX-Requests die Übersetzungen zu einem bestimmten Bereich angefragt werden und der Server die Übersetzungen wegen des Fehlenden json_encode() nicht liefern kann.

Wenn das Aktivieren des JSON-Packages oder das Kompilieren von PHP mit der JSON-Unterstützung ein Problem ist, kannst du dir mit folgender Funktion helfen:

Code: Alles auswählen

if (!function_exists('json_encode')) {
	function json_encode($data) {
		switch ($type = gettype($data)) {
			case 'NULL':
				return 'null';
			case 'boolean':
				return ($data ? 'true' : 'false');
			case 'integer':
			case 'double':
			case 'float':
				return $data;
			case 'string':
				return '"' . addslashes($data) . '"';
			case 'object':
				$data = get_object_vars($data);
			case 'array':
				$output_index_count = 0;
				$output_indexed = array();
				$output_associative = array();
				foreach ($data as $key => $value) {
					$output_indexed[] = json_encode($value);
					$output_associative[] = json_encode($key) . ':' . json_encode($value);
					if ($output_index_count !== NULL && $output_index_count++ !== $key) {
						$output_index_count = NULL;
					}
				}
				if ($output_index_count !== NULL) {
					return '[' . implode(',', $output_indexed) . ']';
				} else {
					return '{' . implode(',', $output_associative) . '}';
				}
			default:
				return ''; // Not supported
		}
	}
}
Erstelle dafür eine Datei "config.local.php" in "data/config/production/" und füge die Funktion von oben ein. Du kannst das auch als Plugin implementieren, das bleibt dir überlassen.

Das Problem mit der zu niedrigen PHP Version bleibt weiterhin...

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
steve04
Beiträge: 46
Registriert: Fr 5. Nov 2010, 20:26
Kontaktdaten:

Re: Fehlermeldung could not get translations

Beitrag von steve04 »

Da fehlt mir etwas: Wieso ist 12 kleiner als 3? Die 5.2.12 wurde lt. http://php.net/releases/index.php zwei Jahre nach der 5.2.3 veröffentlicht...

Ansonsten Danke für den workaround. Ich werde es versuchen.

Ratlos,
Stephan
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Fehlermeldung could not get translations

Beitrag von xmurrix »

steve04 hat geschrieben:Da fehlt mir etwas: Wieso ist 12 kleiner als 3? Die 5.2.12 wurde lt. http://php.net/releases/index.php zwei Jahre nach der 5.2.3 veröffentlicht...
Stimmt, du hast recht, die 5.2.13 ist größer als die 5.2.3.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
goronwy
Beiträge: 14
Registriert: So 22. Sep 2002, 13:42
Wohnort: Butzbach Maibach
Kontaktdaten:

Re: Fehlermeldung could not get translations

Beitrag von goronwy »

alsoooo .... ich hab das gleiche Problem, obwohl phpinfo() mir folgendes sagt:

Hoster: all-inkl
PHP Version: 5.2.12-nmm4

json
json support enabled
json version 1.2.1

Meine Fehlermeldung sieht zudem auch etwas anders aus:

[04-Nov-2013 19:34:03] PHP Parse error: syntax error, unexpected ':' in /www/htdocs/xxxxx/files/contenido/classes/class.ajax.php on line 350

Herzliche Grüße

Mathias Berkenkamp
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Fehlermeldung could not get translations

Beitrag von xmurrix »

goronwy hat geschrieben:alsoooo .... ich hab das gleiche Problem, obwohl phpinfo() mir folgendes sagt:
...
[04-Nov-2013 19:34:03] PHP Parse error: syntax error, unexpected ':' in /www/htdocs/xxxxx/files/contenido/classes/class.ajax.php on line 350
...
Wahrscheinlich ist der folgende Kommentar auch für dich hilfreich:
http://forum.contenido.org/viewtopic.ph ... 72#p161772

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
Bernbacher
Beiträge: 63
Registriert: Fr 21. Jan 2011, 13:29
Kontaktdaten:

Re: Fehlermeldung could not get translations

Beitrag von Bernbacher »

Hallo,
also ich bekomme auch nach der Installation von Contenido 4.9.2 ständig den Hinweis "could not get translations" im Backend. Was mache ich falsch?
PHP: Version 5.2.17
MySql: 5.5.28
json support: enabled
json version: 1.2.1

Gruß Bernbacher
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Fehlermeldung could not get translations

Beitrag von xmurrix »

Bernbacher hat geschrieben:...also ich bekomme auch nach der Installation von Contenido 4.9.2 ständig den Hinweis "could not get translations" im Backend. Was mache ich falsch?...
Hast du schon folgenden Kommantar zu einem ähnlichen Beitrag gelesen und den Änderungsvorschlag eventuell übernommen?
http://forum.contenido.org/viewtopic.ph ... 72#p161772

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
Bernbacher
Beiträge: 63
Registriert: Fr 21. Jan 2011, 13:29
Kontaktdaten:

Re: Fehlermeldung could not get translations

Beitrag von Bernbacher »

Wow xmurrix,

das wars. Bin mal wieder begeistert von der schnellen kompetenten Hilfe und das sogar am So. Nachmittag, vielen Dank!
Auch wenn ich mich wundere, dass nicht auch viele andere das gleiche Problem haben.

Also hier nochmal die Lösung:
In der contenido/classes/class.ajax.php
die bisherige Zeile 350:
$modulecheck = getSystemProperty("system", "modulecheck") ? :true;
durch
$modulecheck = ("true" === getSystemProperty("system", "modulecheck"));
ersetzen.

Gruß Bernbacher.
Antworten