Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 31. October 2017 23:29

Janl
Server-Pate
Ort: Freistadt, Österreich
Registriert: 13. December 2010
Beiträge: 1.043
Webseite

[GELÖST] PHP / MySQL Problem

Nach eine Übersiedlung einer Webseite zeigt CGCalendar keine Termine im Frontend, im Backend ist alles da.

PHP Error ist:

[fcgid:warn] [pid 2824:tid 140091255142144] [client xxx.xxx.xxx.xxx:xxxxx] mod_fcgid: stderr: PHP Warning:  json_encode(): Invalid UTF-8 sequence in argument in /var/www/vhosts/abcde.xyz/domainname.de/modules/CGCalendar/function.admindisplaymanageevents.php on line 47, referer: http://my.subdomain.xyz/admin/systemmai … ac657b12f7

Angeblich soll es ein Problem mit dem Characterset der DB geben, jedoch ist alles auf UTF8 eingestellt.
MySQL hat sogar UTF8MB4 (voll Unicode Kompatibel) als Characterset zu Verfügung.
Beim Import ist auf UTF8 geachtet.

CMSMS 1.12.2 - CGCalendar 1.14.3 - CGSimpleSmarty 1.10 - CGExtensions 1.53.19
bei eine andere Seite, wo nur CGExtensions 1.53.17 genutzt wird, funktioniert es, ist aber ein anderer Server.

Was ratet ihr mir, CGExtensions downgraden?
Oder soll ich noch etwas kontrollieren in MySQL?

MfG
Jan


Ubuntu 16.04 mit KDE - LAMP

Offline

#2 01. November 2017 14:04

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.066

Re: [GELÖST] PHP / MySQL Problem

Wieso downgrade?
Du benutzt eine Version von 2014.
Und du glaubst, den Fehler umgehen zu können, indem Du auf eine noch ältere Version umsteigst?

Ich bin mir nämlich nicht sicher, ob der Fehler in MySQL zu finden ist. Scheint mir eher ein Fehler in PHP zu sein. Könnte am CMS liegen. Oder an der CGCalendar Version. Oder an der Datenbankverbindung. Mag ja sein, dass die Datenbank komplett UTF-8 ist, aber welche Kodierung erwartet das PHP-Script? Evtl. werden die Daten ja irgendwo nochmal konvertiert. Lass Dir doch mal die Daten ausgeben, die da mit json_encode kodiert werden sollen.

Also in der Datei "modules/CGCalendar/function.admindisplaymanageevents.php" nach Zeile 45:

$locale_info = cgcalendar_utils::get_locale_dates();

einfach mal ein

einfügen.

Offline

#3 01. November 2017 15:25

Janl
Server-Pate
Ort: Freistadt, Österreich
Registriert: 13. December 2010
Beiträge: 1.043
Webseite

Re: [GELÖST] PHP / MySQL Problem

Hallo NaN,

ich habe die1.12.2 mit verschiedene Module getestet, die angegebene Kombination funktioniert bei Anderen.

wenn ich in dem Script print_r($locale_info); und exit: gebe dann bekomme ich noch immer eine leere Kalender, der Template ohne jegliche Daten.

Mit Debug finde ich

(mysqli): SELECT DISTINCT E.event_id FROM cms_module_cgcalendar_events E
WHERE ( (E.event_date_start BETWEEN '2017-11-01 00:00:00' AND '2017-11-30 23:59:59') OR (E.event_date_end BETWEEN '2017-11-01 00:00:00' AND '2017-11-30 23:59:59') OR (E.event_date_start <= '2017-11-01 00:00:00' AND E.event_date_end > '2017-11-30 23:59:59') )
ORDER BY E.event_date_start ASC
Error (3065): Expression #1 of ORDER BY clause is not in SELECT list, references column 'admin_fswein.E.event_date_start' which is not in SELECT list; this is incompatible with DISTINCT

So zu sehen selektiert er wegen dieses Fehlers keine Events.

Unterschiedlich ist, dass der Server und OS (Ubuntu 16.04) /Mysql (5.7.20) neuere Versionen sind.

Im Allgemeinen soll ich doch nach 2.3 updaten? Meine erste Test mit 2.3.1 ist gut verlaufen.


EDIT
sieht so aus, als kann MySQL 5.7 diesen Kode nicht verarbeiten
https://stackoverflow.com/questions/414 … -in-select

Es wäre möglich mit "adding sql_mode='' to your my.cnf file" - wie das auf andere Webapps wirkt, muss ich versuchen.

https://stackoverflow.com/questions/368 … 7-with-sel

MfG
Jan

Beitrag geändert von Janl (01. November 2017 15:50)


Ubuntu 16.04 mit KDE - LAMP

Offline

#4 01. November 2017 15:51

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.066

Re: [GELÖST] PHP / MySQL Problem

Das Problem scheint die MySQL Version bzw. die Abfrage zu sein. Bei MySQL 5.7 hat sich wohl etwas geändert, wodurch mehr Restriktionen entstehen. Man kann wohl nicht mehr nach etwas sortieren, was nicht im SELECT statement steht. Es wird ja nur die event_id gesucht. Ergo kann man nicht nach event_date_start sortieren, weil es nicht im Ergebnis vorhanden ist. So oder so ähnlich. Man kann das Verhalten ändern, in dem man MySQL entsprechend konfiguriert, sofern man Zugriff auf die Konfiguration hat.

Entweder den query ohne DISTINCT aufbauen bzw. event_date_start mit ins SELECT Statement nehmen, oder in der Konfiguration den Wert

oder

setzen.

EDIT: da hatten wir wohl beide dieselbe Quelle gefunden smile

Beitrag geändert von NaN (01. November 2017 15:53)

Offline

#5 01. November 2017 20:44

Janl
Server-Pate
Ort: Freistadt, Österreich
Registriert: 13. December 2010
Beiträge: 1.043
Webseite

Re: [GELÖST] PHP / MySQL Problem

Danke NaN für Deine Unterstützung.

Hat funktioniert, alle Einträge werden gezeigt.

Jetzt kann alles zur Ende gemacht werden, Umzug von 8 Webseiten auf neue VServer.

MfG
Jan


Ubuntu 16.04 mit KDE - LAMP

Offline