CONTENIDO unter PHP8 und MariaDB10

Fragen zur Installation von CONTENIDO 4.10? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von Oldperl » Sa 7. Jan 2023, 11:22

Servus,

es hat mit der Verarbeitung in PHP und den (Grund-)Einstellungen der Datenbank zu tun. Ich habe diesen Fehler bereits mehrmals unter PHP8.x und einem aktuellen MySQL-Server gehabt, gerade wenn ich ConLite/Contenido geupt habe, und dabei die alten Encodings der DB übernommen wurden.
Helfen kann die Änderung des Encodings der Tabellenspalte in der DB in der gesucht wird. Alle genutzten Strings in UTF-8, sowohl der Query als auch die Spalte(n) lässt den Fehler verschwinden.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Bernhard_4711
Beiträge: 99
Registriert: Do 25. Jul 2019, 16:08
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von Bernhard_4711 » Mi 8. Mär 2023, 11:28

Sorry, ich lese das erst jetzt... :?
Wie genau habe ich das zu verstehen?
---
Munterbleiben... Bernhard

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von xmurrix » Mi 8. Mär 2023, 17:40

Hallo Bernhard,

bin mal so frei und antworte dir.

Zum Fehler:
...PHP Fatal error: Uncaught mysqli_sql_exception: Regex error 'quantifier does not follow a repeatable item at offset 12'...
Standardmäßig ist die Frontend-Suche in CONTENIDO auf "regexp" eingestellt und da hat anscheinend jemand eine Suche durchgeführt, bei der der eingegebene Text Sonderzeichen enthält, die als Sonderzeichen in regulären Ausdrücken verwendet werden (. \ + * ? usw.). Das sollte man sich näher ansehen und entsprechend in der Suche lösen.

Zum Fehler:
...PHP Fatal error: Uncaught mysqli_sql_exception: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8mb3_general_ci,COERCIBLE) for operation 'regexp'...
Die Suche geht auf die Tabelle 'con_keywords' und anscheinend ist die Kollation der Datenbankverbindung 'utf8mb3_general_ci' und die des Feldes 'keywords' auf 'latin1_swedish_ci' eingestellt.
Wenn man im Frontend die Suche "李小龍 / 李小龙" (Bruce Lee) absetzt, wirst du diesen Fehler bekommen.
Es ist ratsam, die Kollation der Datenbank-Verbindung und die der Tabellen/Tabellenfelder gleich zu halten, vor allem in Feldern, in denen gesucht wird.
Über phpMyAdmin kannst du die Kollation vom Feld 'keywords' in Tabelle 'con_keywords' umstellen. Das sollte kein Risiko sein, da sich die Kollation auf die Sortierung auswirkt und nicht den Zeichensatz der Inhalte ändert. Dennoch wäre eine vorherige Sicherung der Tabelle ratsam.
Ich habe bisher gute Erfahrungen mit der Kollation 'utf8_general_ci' gemacht, sowohn mit der Datenbankverbindung als auch in Tabellen/Tabellenfeldern. Anscheinend ist aber bei dir die Kollation der Datenbankverbindung 'utf8mb3_general_ci', daher kannst du es damit probieren.

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.

Bernhard_4711
Beiträge: 99
Registriert: Do 25. Jul 2019, 16:08
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von Bernhard_4711 » Sa 11. Mär 2023, 11:50

Danke für die ausführliche Antwort.
Tatsächlich sind alle Tabellen auf "latin1_swedish_ci" eingestellt, außer "con_pifa_kontakt_allgemein"; diese Tabelle ist auf "utf8mb3_general_ci" eingestellt.
Ganz unten bei "Gesamt" steht "utf8mb4_general_ci".
Wie das zustande kam, weiß ich nicht. Bewußt habe ich nichts geändert.
Allerdings weiß ich nicht, wie ich das sinnvoll anpassen kann. Das ist für mich "Kisuaheli rückwärts"... :?:
---
Munterbleiben... Bernhard

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von Oldperl » Di 25. Apr 2023, 20:00

Hallo ihr zwei,

wobei Kisuaheli ein schöne Sprache sein soll. :mrgreen:

Und danke @xmurrix für die wirklich ausführliche Antwort, besser hätte ich es nicht erklären können.
@Bernhard, eventuell einfach mal den Nerd Deines Vertrauens fragen, ob er Dir diese Anpassungen mal machen würde.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

mikedreissig
Beiträge: 84
Registriert: Di 10. Jan 2006, 19:28
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von mikedreissig » Fr 28. Apr 2023, 17:48

Hallo Gemeinde,

es gibt ein Problem bei der Installation des Advanced Mod Rewrite im Plugin Manager. Es wird nicht installiert, sondern produziert eine weiße Seite und folgende Fehlermeldung:

Code: Alles auswählen

PHP Fatal error:  Uncaught mysqli_sql_exception: Duplicate entry '2' for key 'con_plugins_rel.PRIMARY'
Systeminfos:
Neuinstallation 4.10.1 Develop mit Mandant, ohne Demo-Site
Installierte PHP-Version 8.1.18
Datenbankserver-Version 8.0.32

Der Primärschlüssel idpluginrelation ist in der DB auf AUTO_INCREMENT gesetzt

Weiß jemand Rat?

Grüße
Michael

mikedreissig
Beiträge: 84
Registriert: Di 10. Jan 2006, 19:28
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von mikedreissig » Fr 28. Apr 2023, 18:14

Es gibt auch Probleme mit dem Modul XML-Sitemap. Nach einem Update von 4.9.12 auf 4.10.1-develop (Mysql 5.7.38) und Umstellung von PHP 7.4 auf 8.1 wird die automatische Aktualisierung der XML-Datei nicht mehr durchgeführt. Gehe ich im Contenido im entsprechenden Artikel auf den Reiter "Editor", gibt es eine weiße Seite. Klicke ich nochmal auf "Editor", wird dieser Text ausgegeben: job was already executed within last 23h.

Im Errorlog steht es diese Meldung:

Code: Alles auswählen

PHP Fatal error:  Uncaught TypeError: Unsupported operand types: cUriBuilderMR * int
EDIT: Da war ich etwas voreilig, ich hatte eine alte Version im Einsatz. Aktuelle Version läuft problemlos.


Grüße
Michael
Zuletzt geändert von mikedreissig am Sa 29. Apr 2023, 15:47, insgesamt 3-mal geändert.

Bernhard_4711
Beiträge: 99
Registriert: Do 25. Jul 2019, 16:08
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von Bernhard_4711 » Sa 29. Apr 2023, 10:16

Oldperl hat geschrieben:
Di 25. Apr 2023, 20:00
@Bernhard, eventuell einfach mal den Nerd Deines Vertrauens fragen, ob er Dir diese Anpassungen mal machen würde.
Eigentlich bin ich der Nerd meines geringsten Mißtrauens. Aber in diesem Fall bin sogar ich ratlos... :?
---
Munterbleiben... Bernhard

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von Faar » Di 2. Mai 2023, 08:26

mikedreissig hat geschrieben:
Fr 28. Apr 2023, 18:14
EDIT: Da war ich etwas voreilig, ich hatte eine alte Version im Einsatz. Aktuelle Version läuft problemlos.
Das dachte ich mir auch, dass das noch aus einer alten Version stammen müsste.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

lunsen_de
Beiträge: 297
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von lunsen_de » Fr 5. Mai 2023, 14:28

Hallo, ich meine letztes Installation (4.10.1 dev), welche mit PHP 8.0 keine Fehler erzeugt hat, mal probeweise auf PHP 8.2 umgestellt.

Sofort füllt sich die Errorlog (massiv) bei jedem Klick im Backend mit unzähligen Fehlern (immer die selben Einträgen):

Code: Alles auswählen

...
[05-May-2023 13:22:30 UTC] PHP Deprecated:  Function utf8_decode() is deprecated in /var/www/vhosts/web25.de/httpdocs/2024/contenido/classes/class.i18n.php on line 140
[05-May-2023 13:22:30 UTC] PHP Deprecated:  Function utf8_decode() is deprecated in /var/www/vhosts/web25.de/httpdocs/2024/contenido/classes/class.i18n.php on line 140
[05-May-2023 13:22:30 UTC] PHP Deprecated:  Function utf8_decode() is deprecated in /var/www/vhosts/web25.de/httpdocs/2024/contenido/classes/class.i18n.php on line 140
[05-May-2023 13:22:30 UTC] PHP Deprecated:  Function utf8_decode() is deprecated in /var/www/vhosts/web25.de/httpdocs/2024/contenido/classes/class.i18n.php on line 140
[05-May-2023 13:22:30 UTC] PHP Deprecated:  Function utf8_decode() is deprecated in /var/www/vhosts/web25.de/httpdocs/2024/contenido/classes/class.i18n.php on line 140
[05-May-2023 13:22:30 UTC] PHP Deprecated:  Function utf8_decode() is deprecated in /var/www/vhosts/web25.de/httpdocs/2024/contenido/classes/class.i18n.php on line 140
...
und

Code: Alles auswählen

...
[05-May-2023 13:25:56 UTC] PHP Deprecated:  Creation of dynamic property Smarty_Internal_Extension_Handler::$_foreach is deprecated in /var/www/vhosts/web25.de/httpdocs/2024/contenido/plugins/smarty/smarty_source/sysplugins/smarty_internal_extension_handler.php on line 182
[05-May-2023 13:25:56 UTC] PHP Deprecated:  Creation of dynamic property Smarty_Variable::$do_else is deprecated in /var/www/vhosts/web25.de/httpdocs/2024/cms/cache/templates_c/6d59d28c80955e642ce1222a91010fa9ff4a109e_0.file.get.tpl.php on line 30
[05-May-2023 13:25:56 UTC] PHP Deprecated:  Creation of dynamic property Smarty_Internal_Template::$compiled is deprecated in /var/www/vhosts/web25.de/httpdocs/2024/contenido/plugins/smarty/smarty_source/sysplugins/smarty_internal_template.php on line 719
...
Die deprecatedlog.txt füllt sich massiv mit:

Code: Alles auswählen

...
Deprecated call: formatToDate() [class.date.php(188)]: "The function `strftime()` is deprecated as of PHP 8.1.0, and the passed format string was detected as a `strftime()` format. The `date()` function will be used as a fallback, but without localization support."
	formatToDate() called in file class.content.type.date.php(260)
	_formatDate() called in file class.content.type.date.php(91)
	__construct() called in file class.content.type.teaser.php(409)
	_fillTeaserTemplateEntry() called in file class.content.type.teaser.php(295)
	generateTeaserCode() called in file include.front_content.php(738) : eval()'d code(120)
	{closure}() called in file include.front_content.php(738) : eval()'d code(121)
	eval() called in file include.front_content.php(738)
	include() called in file front_content.php(43)

Deprecated call: formatToDate() [class.date.php(188)]: "The function `strftime()` is deprecated as of PHP 8.1.0, and the passed format string was detected as a `strftime()` format. The `date()` function will be used as a fallback, but without localization support."
	formatToDate() called in file class.content.typ
...
Vielleicht hilft das ja bei der Weiterentwicklung.

Grüße Lars

Bernhard_4711
Beiträge: 99
Registriert: Do 25. Jul 2019, 16:08
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von Bernhard_4711 » Sa 6. Mai 2023, 09:55

Das mit strftime() ist bekannt...

Und die vielen Deprecated Meldungen (das sind keine Fehlermeldungen im Sinn von Fehler oder Error, sondern "nur" Hinweise) kannst Du abstellen, indem Du in der Datei
/data/config/production/config.misc.php
die Zeile 171 von:

Code: Alles auswählen

$cfg['php_error_reporting'] = E_ALL & ~(E_STRICT | E_NOTICE);
änderst in:

Code: Alles auswählen

$cfg['php_error_reporting'] = E_ALL & ~(E_STRICT | E_NOTICE | E_DEPRECATED | E_WARNING);
Zuletzt geändert von Bernhard_4711 am Sa 6. Mai 2023, 10:03, insgesamt 1-mal geändert.
---
Munterbleiben... Bernhard

Bernhard_4711
Beiträge: 99
Registriert: Do 25. Jul 2019, 16:08
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von Bernhard_4711 » Sa 6. Mai 2023, 10:02

Noch etwas:
Durchsuche bitte alle Dateien .htaccess (der Punkt am Anfang ist Absicht, die Dateien heißen wirklich so!) auf die veralteten Einträge oder

Code: Alles auswählen

order deny,allow
oder

Code: Alles auswählen

deny from all
(manchmal wird deny groß und manchmal klein geschrieben!) und ändere alles in

Code: Alles auswählen

# Prevent access to this folder
Require all denied
---
Munterbleiben... Bernhard

mikedreissig
Beiträge: 84
Registriert: Di 10. Jan 2006, 19:28
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von mikedreissig » Mo 8. Mai 2023, 18:29

Hallo Gemeinde,

ich habe bei einem Projekt Probleme mit der Contenido Statistik. Nach dem Update auf PHP 8.1 werden deutlich weniger Klicks angezeigt, obwohl beim Provider im Access-Log weiterhin die ungefähr gleichen Klicks protokolliert werden.

System:
Update auf 4.10.1-develop
PHP version 8.1.18
Databank Mysql 5.7.41-log
Provider: IONOS

Weiß jemand Rat?


Grüße
Michael

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von xmurrix » Di 9. Mai 2023, 10:54

mikedreissig hat geschrieben:
Mo 8. Mai 2023, 18:29
ich habe bei einem Projekt Probleme mit der Contenido Statistik. Nach dem Update auf PHP 8.1 werden deutlich weniger Klicks angezeigt, obwohl beim Provider im Access-Log weiterhin die ungefähr gleichen Klicks protokolliert werden.
Hallo Michael,

kannst du das Problem etwas näher definieren, werden die Klicks nicht in der Datenbank gespeichert oder werden sie nicht korrekt angezeigt?

Die Funktionalität des Aufzeichnens eines Seitenaufrufs hat sich meines Wissens nicht geändert, aber der Bereich rund um die Anzeige der Statistik, die hat auch zum Teil komplexe Abfragen, da kann es sein, dass es da noch Probleme gibt.

Ein anderer Grund wäre z. B., dass Browser immer mehr die HTTP Header "HTTP_DNT" (Do-Not-Track header) mitschicken, falls so ein HPTT-Header vorkommt, wird auch nichts aufgezeichnet.

Ob sich die Do-Not-Track header auch in der Access-Log wiederspiegelt, müsstest du mit dem Provider klären.

Viele Grüße

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

lunsen_de
Beiträge: 297
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von lunsen_de » Mi 10. Mai 2023, 15:30

Hallo Bernhard,

danke für die Infos.

Gibt es schon etwas zum Problem mit strftime()?

Ich habe die Warnungen abgestellt (das kannte ich auch schon), allerdings ist es doch sicher von Vorteil, wenn der Grund der Warnungen beseitigt wird. Ich sehe mich hier als Tester mit nicht so großen Programmierkenntnissen. Ich versuche hier mein Bestes zur Weiterentwicklung beizutragen, daher nicht falsch verstehen.

Bei den .htaccess Dateien habe ich nur die beiden in den data Ordnern gefunden (auf root Ebene und in cms) unde den Inhalt angepasst. Habe ich noch eine übersehen? Kannst du kurz erläutern, was der ursprüngliche Inhalt für Fehler verursacht hat bzw. was jetzt damit verbessert wird?

Grüße Lars

Antworten