Gibt es schon eine Contenido Version für PHP 8

Fragen zur Installation von CONTENIDO 4.10? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Gibt es schon eine Contenido Version für PHP 8

Beitrag von Faar » Mo 20. Feb 2023, 09:51

xmurrix hat geschrieben:
Sa 18. Feb 2023, 16:10
Grüße
Murat
Danke
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: Gibt es schon eine Contenido Version für PHP 8

Beitrag von lunsen_de » Mi 22. Feb 2023, 11:48

Hallo, habe gerade die aktuelle DEV installiert.

Nach Umstellung auf Tinymce3 erscheint beim Aufrufen eines Artikels im Backend (Editor) folgende Fehlermeldung:

Code: Alles auswählen

[22-Feb-2023 10:42:56 UTC] PHP Warning:  Undefined array key "contenido_gzip" in /var/www/....../httpdocs/2024/contenido/external/wysiwyg/tinymce3/editorclass.php on line 139
Kann man das beheben?

Außerdem taucht noch einmal auf:

Code: Alles auswählen

[22-Feb-2023 07:57:43 UTC] PHP Warning:  Undefined array key 1 in /var/www/...../httpdocs/2024/contenido/includes/ajax/include.ajax.con.php on line 42
PHP 8.0
4.10.1 dev (aktueller Download)

Grüße larslunsen

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

Re: Gibt es schon eine Contenido Version für PHP 8

Beitrag von xmurrix » Mi 22. Feb 2023, 15:37

Hallo larslunsen,

vielen Dank für das Feedback.

Da der TinyMCE3 bei CONTENIDO seit dem 23.11.2017 als veraltet (@deprecated) gekennzeichnet ist, wird hier auch nicht großartig weiterentwickelt. Du kannst aber die Zeile 139 in der contenido/external/wysiwyg/tinymce3/editorclass.php von

Code: Alles auswählen

        if ($this->_aSettings["contenido_gzip"] == "true") {
in wie folgt ändern

Code: Alles auswählen

        if ($this->_aSettings["contenido_gzip"] ?? "" == "true") {
Die Warnung in der "contenido/includes/ajax/include.ajax.con.php" scheint beim erstmaligen Aufruf im Artikelbereich aufzutreten, wenn der Benutzer dort eine Kategorie öffnet/schließt. Der Fehler wurde gerade in der develo-Branch behoben.

Die Fehlerbehandlung in PHP 8.0 is strikter, da werden auch Fälle protokolliert, die früher kein Problem dargestellt haben. Bei CONTENIDO wurde an diesem Thema gearbeitet, da es aber alle Bereiche unter verschiedenen Konstellationen (Neue Installation, mit/ohne Mandant oder Sprache, mit/ohne Layouts oder Module, usw.) betrifft, kann es vorkommen, dass noch nicht alles abgefangen wird.

Du kannst die Fehlerbehandlung auch so konfigurieren, dass Warnungen nicht zu Einträgen in der Log-Datei führen, siehe folgende Beiträge:
viewtopic.php?f=115&t=44683#p182936

Danke nochmals, je mehr Feedback wir bekommen, desto besser kann man CONTENIDO machen.

Grüße
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.

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

Re: Gibt es schon eine Contenido Version für PHP 8

Beitrag von lunsen_de » Do 23. Feb 2023, 09:38

Hallo, danke für die Info. Hat funktioniert.

Hast du noch eine Idee zur 2. Fehlermeldung?

Nach einer Modulsynchronisation tauchte jetzt auf:

Code: Alles auswählen

[23-Feb-2023 08:44:12 UTC] PHP Warning:  Undefined array key "error" in /var/www/...../httpdocs/2024/contenido/classes/genericdb/class.item.php on line 389
[23-Feb-2023 08:44:12 UTC] PHP Warning:  Undefined array key "input" in /var/www/...../httpdocs/2024/contenido/classes/genericdb/class.item.php on line 389
[23-Feb-2023 08:44:12 UTC] PHP Warning:  Undefined array key "output" in /var/www/...../httpdocs/2024/contenido/classes/genericdb/class.item.php on line 389
Grüße larslunsen

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

Re: Gibt es schon eine Contenido Version für PHP 8

Beitrag von xmurrix » Do 23. Feb 2023, 14:00

...Hast du noch eine Idee zur 2. Fehlermeldung?...

...[23-Feb-2023 08:44:12 UTC] PHP Warning: Undefined array key "error" in /var/www/...../httpdocs/2024/contenido/classes/genericdb/class.item.php on line 389
[23-Feb-2023 08:44:12 UTC] PHP Warning: Undefined array key "input" in /var/www/...../httpdocs/2024/contenido/classes/genericdb/class.item.php on line 389...
Die Warnungen konnte ich reproduzieren, das passiert, wenn man z.B. ein Modul im Dateisystem erstellt und dann im CONTENIDO Backend die Module synchronisiert. Da scheint es noch eine Fehlerhafte Logik zu geben, was zwar diese Warnungen produziert, aber ansonsten zu keinen weiteren Problemen führt. Danke für die Info.

Nachtrag:
Für die Warnungen beim Synchronisieren gibt es ein Ticket #364, das schon bearbeitet wurde.


Grüße
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.

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

Re: Gibt es schon eine Contenido Version für PHP 8

Beitrag von mikedreissig » Di 28. Feb 2023, 19:50

Hallo Gemeinde,

hier eine Rückmeldung bezüglich Contenido unter PHP 8 bei verschiedenen Providern:

Ausgangsversion
CONTENIDO Version 4.9.12
Installierte PHP-Version 7.4
Datenbankserver-Version MySql 5.7

Update Contenido von 4.9.12 auf 4.10.0 auf 4.10.1 auf 4.10.1 Develop (Stand November 2022 und Januar 2023) unter PHP 7.4, danach Umstellung auf PHP 8.1.

Läuft absolut problemlos bei folgenden Providern:
IONOS, Strato, Host Europe, Domainfactory, variomedia.de, secure.fresh-internet.net, loswebos.de, all-inkl.com, kasserver.com und netclusive.de

Neuinstallation bei IONOS
CONTENIDO Version 4.10.1 Develop (Stand 28. Februar 2023)
Installierte PHP-Version 8.1.16
Datenbankserver-Version MySql 8.0.26

Setup läuft problemlos durch, nur nachfolgende Meldungen gibt es:

PHP Fatal error: Uncaught mysqli_sql_exception: Incorrect DATETIME value: '2023--28 00:00:00' in /blabla/contenido/classes/db/class.db.driver.mysqli.php:204
Stack trace:
#0 /blabla/contenido/classes/db/class.db.driver.mysqli.php(204): mysqli_query(Object(mysqli), 'SELECT * FROM `...')
#1 /blabla/contenido/classes/db/class.db.driver.handler.php(704): cDbDriverMysqli->query('SELECT * FROM `...')
#2 /blabla/contenido/classes/genericdb/class.item.collection.php(835): cDbDriverHandler->query('SELECT * FROM `...')
#3 /blabla/contenido/includes/include.logs.php(230): ItemCollection->select(' WHERE user_id ...', '', ' ORDER BY logti...', ' LIMIT 10')
#4 /blabla/contenido/main.php(213): include_once('/blabla...')
#5 {main}
thrown in /blabla/contenido/classes/db/class.db.driver.mysqli.php on line 204


Beim Prüfen der Bereiche im Backend werden diese Meldungen ausgegeben:

PHP Fatal error: Uncaught Error: Call to a member function render() on string in /blabla/contenido/plugins/user_forum/includes/include.left_bottom.php:26
Stack trace:
#0 /blabla/contenido/main.php(212): include_once()
#1 {main}
thrown in /blabla/contenido/plugins/user_forum/includes/include.left_bottom.php on line 26

Im Bereich Frontend -> Gruppe erstellen fehlt wieder der Reiter "Frontend-Berechtigungen" obwohl das doch gefixed wurde
(viewtopic.php?f=115&t=44683&p=182941&hi ... en#p182941)

Großen Dank an die Entwickler, dass die Umstellung so gut geklappt hat!

Grüße
Michael
Zuletzt geändert von mikedreissig am Mi 1. Mär 2023, 17:57, insgesamt 1-mal geändert.

McHubi
Beiträge: 1209
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: Gibt es schon eine Contenido Version für PHP 8

Beitrag von McHubi » Mi 1. Mär 2023, 09:21

Danke für euren Input und vor allem an alle, die die DEV-Version voranbringen :!: :!: :!: :D

Ich hoffe, dass die ganzen Mühen bald auch in eine neue und offizielle 4.10.2 münden. Gerade Provider wie ionos stressen mal wieder in punkto Umstellung auf PHP8 und mit Blick auf die "Kundenkommunikation" ist es natürlich immer besser, wenn man eine offizielle Version installieren kann statt einer DEV - auch wenn die sich dann ggf. auch kaum unterscheiden.

In punkto AMR mal ein Beitrag von mir zur Info...

Ich habe den Ordner mod_rewrite aus den DEV-Dateien gezipped um sie dann im Plugin-Manager für eine Aktualisierung zu verwenden. Nach dem Hochladen kommt jedoch nur eine weiße Seite (Frame) statt einer Erfolgs- oder Fehlermeldung.

Habe daraufhin das Plugin deinstalliert, den Ordner mod_rewrite aus contenido/plugins entfernt und den Ordner aus den DEV-Dateien rüberkopiert. Im Anschluss dann im Plugin-Manager das Plugin neu installiert, die Cashes alle gelöscht und im Frontend läuft auch alles so wie bisher. Dennoch bleiben diese Fehlermeldungen mit - mMn - Bezug zum AMR:

PHP Warning: Undefined property: ModRewriteController::$_sPath in C:\xampp\htdocs\contenido\plugins\mod_rewrite\classes\class.modrewritecontroller.php on line 532
PHP Warning: Undefined property: ModRewriteController::$_sPath in C:\xampp\htdocs\contenido\plugins\mod_rewrite\classes\class.modrewritecontroller.php on line 188
PHP Warning: Undefined array key "urlpath" in C:\xampp\htdocs\contenido\plugins\mod_rewrite\classes\class.modrewriteurlstack.php on line 181
PHP Warning: Undefined array key "urlname" in C:\xampp\htdocs\contenido\plugins\mod_rewrite\classes\class.modrewriteurlstack.php on line 182
PHP Warning: Undefined array key "urlpath" in C:\xampp\htdocs\contenido\plugins\mod_rewrite\classes\class.modrewriteurlstack.php on line 181
PHP Warning: Undefined array key "urlname" in C:\xampp\htdocs\contenido\plugins\mod_rewrite\classes\class.modrewriteurlstack.php on line 182
PHP Warning: Undefined array key "urlpath" in C:\xampp\htdocs\contenido\plugins\mod_rewrite\classes\class.modrewriteurlstack.php on line 181
PHP Warning: Undefined array key "urlname" in C:\xampp\htdocs\contenido\plugins\mod_rewrite\classes\class.modrewriteurlstack.php on line 182


Jemand einen Tipp außer Warnings deaktivieren? Meine Version von der DEV ist allerdings auch schon vom 23.01.2023... Ggf. hat sich da was getan in der Zwischenzeit.


So. Auf die DEV-Version mit Stand 28.02.2023 ein Update durchgeführt - passt jetzt soweit, die o.g. Fehler werden nicht mehr geworfen - ich lasse sie aber zur Info noch in dem Post hier drin.

Habe allerdings ein weiteres Problem festgestellt, ich kann nämlich keine Anpassungen in den Modulcodes speichern. Betrifft nur den Reiter "Bearbeiten", in allen anderen Reitern scheint das Speichern zu klappen. Beim Bearbeiten-Reiter wird nach dem Speichern lediglich ein weißer Frame dargestellt und im Errorlog taucht das hier auf:

Code: Alles auswählen

PHP Warning:  Undefined array key 1 in C:\xampp\htdocs\contenido\classes\version\class.version.php on line 387
PHP Warning:  Undefined array key 1 in C:\xampp\htdocs\contenido\classes\version\class.version.php on line 387
PHP Fatal error:  Uncaught TypeError: Unsupported operand types: string + int in C:\xampp\htdocs\contenido\classes\version\class.version.php:467
Stack trace:
#0 C:\xampp\htdocs\contenido\classes\version\class.version.php(350): cVersion->getRevision()
#1 C:\xampp\htdocs\contenido\includes\functions.mod.php(64): cVersion->createNewVersion()
#2 C:\xampp\htdocs\contenido\includes\type\action\include.mod_edit.action.php(47): modEditModule('5', 'content_header_...', '', '', '<?php\r\n\r\n/**\r\n ...', '', 'content')
#3 C:\xampp\htdocs\contenido\main.php(200): include_once('C:\\xampp\\htdocs...')
#4 {main}
  thrown in C:\xampp\htdocs\contenido\classes\version\class.version.php on line 467
Im Git habe ich unter issues kein passendes Pendant finden können.

Update zum fatal error:
Lässt sich lösen, indem folgende Anpassung in der contenido\classes\version\class.version.php vorgenommen wird:

private function getRevision() {
$this->iVersion = (intval($this->iRevisionNumber) + 1) . '_' . $this->dActualTimestamp;
return $this->iVersion;
}

Habe das im Git mal als issue angelegt und die Lösung dort vermerkt --> https://github.com/CONTENIDO/CONTENIDO/issues/368 Hoffe, das ist soweit okay und kann insofern "einfließen".

Was noch bleibt, sind die undefined array keys.

Bis dahin und Danke für Tipps,

Markus
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)

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

Re: Gibt es schon eine Contenido Version für PHP 8

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

Hallo Michael, hallo Markus,

vielen Dank für euer Feedback und eure Hilfe, je mehr Leute aus der Community sich daran beteiligen, desto schneller kann man solche Probleme auffinden und lösen.

@Michael:
Die Fehler in der 'includes.logs.php' (PHP Fatal error: Uncaught mysqli_sql_exception: Incorrect DATETIME value: '2023--28 00:00:00' ) und in der 'includes.left_bottom.php' (PHP Fatal error: Uncaught Error: Call to a member function render() on string) sind mittlerrweile behoben.

@Markus:
Der Fehler in der 'class.modrewritecontroller.php' (PHP Warning: Undefined property: ModRewriteController::$_sPath) müsste längst behoben sein, da das AMR-Plugin letztens überarbeitet wurde.
Die Fehler in der 'class.modrewriteurlstack.php' (PHP Warning: Undefined array key "urlpath" und PHP Warning: Undefined array key "urlname") sollten auch nicht mehr auftauchen. Falls doch, dann schaue ich mir das nochmals genauer an.
Auch der Fehler in 'class.version.php' ist behoben, danke nochmals für das Erstellen des Tickets.

Hoffen wir, dass wir sehr bald einen sauberen und unter PHP 8 ohne Warnungen in der Errorlog CONTENIDO-Stand haben...

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.

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

Re: Gibt es schon eine Contenido Version für PHP 8

Beitrag von Faar » Mi 1. Mär 2023, 17:31

McHubi hat geschrieben:
Mi 1. Mär 2023, 09:21
Ich habe den Ordner mod_rewrite aus den DEV-Dateien gezipped um sie dann im Plugin-Manager für eine Aktualisierung zu verwenden.
Wenn, dann immer die komplette DEV nehmen, einzeln herauspicken ist heikel und passt im Zweifel nicht zusammen.
Nach dem Hochladen kommt jedoch nur eine weiße Seite (Frame) statt einer Erfolgs- oder Fehlermeldung.
:roll:
Dennoch bleiben diese Fehlermeldungen mit - mMn - Bezug zum AMR:
PHP Warning: ...
Jemand einen Tipp außer Warnings deaktivieren?
Die Warnungen zu deaktivieren ist der beste Tipp.
Die kommen daher, dass im Code noch davon ausgegangen wird, dass Variablen und anderes vorhanden sind (if $abc==1 ...).
Wenn aber im Anfangszustand $abc noch nicht existiert, hat PHP 7.x geflissentlich die Augen geschlossen und das durchgehen lassen.
PHP 8 meckert das nun an.
Darum muss man in einer Fleißarbeit all diese Stellen z.B. mit (if isset $abc ) und falls ja, dann erst weiter mit (if $abc==1 ...) überarbeiten.
Aber diese Warnungen sind harmlos, also deaktivieren.
Habe allerdings ein weiteres Problem festgestellt, ich kann nämlich keine Anpassungen in den Modulcodes speichern. Betrifft nur den Reiter "Bearbeiten",
Da wurde etwas meines Wissens vor gar nicht allzu langer Zeit behoben. Muss im Januar gewesen sein. Ich würde mal die aktuelle DEV-Version updaten.
Was noch bleibt, sind die undefined array keys.
Das ist wie oben beschrieben.
Zu diesem Zeitpunkt sind die Arrays noch nicht gefüllt aber werden benutzt, also meckert PHP das an.
Zum Beispiel ein Formular:

Code: Alles auswählen

$name = $_GET[name];
echo $name;
Wurde das Formular nicht abgeschickt, gibt es noch gar kein $_GET[name]. Das wird ja erst durch das Senden vom Formular erzeugt.
Hier eine Erklärung dazu:
https://www.simplilearn.com/tutorials/p ... dex-in-php

Man muss sich beim Programmieren halt nun mehr Gedanken darüber machen, wann etwas vorhanden ist und was es sein könnte.
Das ist in sicher vielen anderen Programmiersprachen immer schon so gewesen. In PL/1 musste ich an erster Stelle immer eine Reihe von Vereinbarungen schreiben wie: DECLARE X DECIMAL FLOAT(16);
Damit war x nun da im Programm und genau geregelt, was es ist.
Bei PHP konnte man bisher einfach $name = $_GET[name] schreiben, weil PHP ja schon das richtig machen würde, wenn $_GET passend gefüllt ist.
Das geht eigentlich immer schon nicht aber die Fehlermeldungen wurden und werden nun spitzfindiger.

edit: Ich war zu langsam beim Schreiben, Xmurrix war schneller :D
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

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

Re: Gibt es schon eine Contenido Version für PHP 8

Beitrag von mikedreissig » Mi 1. Mär 2023, 18:44

Hallo Murat,

prima, ich habe mir gerade die letzte Version heruntergeladen. Die in meinem vorherigen Post erwähnten Fehlermeldungen bleiben jetzt aus, dafür ist leider der Bereich "Frontend" komlett weg, d.h., es wird unterhalb der Navigation nur eine weiße Seite angezeigt.

Fehlermeldung:

PHP Fatal error: Uncaught mysqli_sql_exception: Duplicate entry '14' for key 'con_properties.PRIMARY' in /blabla/contenido/classes/db/class.db.driver.mysqli.php:204
Stack trace:
#0 /blabla/contenido/classes/db/class.db.driver.mysqli.php(204): mysqli_query(Object(mysqli), 'INSERT INTO `co...')
#1 /blabla/contenido/classes/db/class.db.driver.handler.php(788): cDbDriverMysqli->query('INSERT INTO `co...')
#2 /blabla/contenido/classes/genericdb/class.item.collection.php(1294): cDbDriverHandler->query('INSERT INTO `co...')
#3 /blabla/contenido/classes/contenido/class.property.php(185): ItemCollection->createNewItem()
#4 /blabla/contenido/classes/contenido/class.property.php(380): cApiPropertyCollection->create('user_id', '48a365b4ce1e322...', 'itemsperpage', 'frontend', 0, true)
#5 /blabla/contenido/classes/genericdb/class.item.php(635): cApiPropertyCollection->setValue('user_id', '48a365b4ce1e322...', 'itemsperpage', 'frontend', 0)
#6 /blabla/contenido/includes/include.frontend.user_menu.php(44): Item->setProperty('itemsperpage', 'frontend', 0)
#7 blabla/contenido/main.php(212): include_once('/homepages/40/d...')
#8 {main}
thrown in /blabla/contenido/classes/db/class.db.driver.mysqli.php on line 204

Grüße
Michael

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

Re: Gibt es schon eine Contenido Version für PHP 8

Beitrag von xmurrix » Do 2. Mär 2023, 01:09

Hallo Michael,
...PHP Fatal error: Uncaught mysqli_sql_exception: Duplicate entry '14' for key 'con_properties.PRIMARY' in /blabla/contenido/classes/db/class.db.driver.mysqli.php:204
Stack trace:
#0 /blabla/contenido/classes/db/class.db.driver.mysqli.php(204): mysqli_query(Object(mysqli), 'INSERT INTO `co...')...
kannst du mir ein paar Hintergrundinformationen darüber geben, denn ich kann diesen Fehler nicht reproduzieren. Auch eine Durchsicht des Codes hat keine Auffälligkeiten gezeigt.

Ist das ein Update einer vorhandenen CONTENIDO Installation oder eine neuen Installation (mit/ohne Mandant, Sprache, Benutzer oder Gruppen)?

Der Primärschlüssel der Eigenschaften-Tabelle hat eigentlich das Attribut 'AUTO_INCREMENT', d.h. die Datenbank kümmert sich darum, den Primärschlüssel zu setzen, wenn ein Datensatz angelegt wird. im Code wird auch nirgendwo ein Eintrag in die Eigenschaften-Tabelle geschrieben, bei der der Primärschlüssel übergeben wird.

Eigentlich sollte das nicht passieren.

Ich kenne nur einen Fall, bei der das vorkommen kann.
In früheren CONTENIDO Versionen wurden die Primärschlüssel nicht auf Datenbankebene vergeben, sondern im CONTENIDO Code.
Das wurde ab der Version 4.9 umgestellt auf 'AUTO_INCREMENT' und das CONTENIDO-Setup übernimmt die Umstellung.
Es gibt aber ein Problem, wenn in der Datenbank Einträge mit doppelten Primärschlüsseln vorkommen, dann lässt die Datenbank das Primärschlüsselfeld nicht auf 'AUTO_INCREMENT' umstellen. In der setuplog.txt müsste dann dieser Fehler auch auftauchen.

Mit sind solche Fälle, bei denen die Umstellung der Primärschlüsselfelder der Tabellen auf 'AUTO_INCREMENT' nicht funktioniert, bekannt. Falls das bei dir der Fall ist, schlage ich vor, dass du die betroffenen Tabellen von den doppelten Primärschlüsseleinträgen bereinigst und danach das AUTO_INCREMENT-Attribut der Felder manuell setzt.

Dazu gibt es ein Ticket:
https://github.com/CONTENIDO/CONTENIDO/issues/31

Und auch einen Forumbeitrag:
viewtopic.php?t=43479

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.

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

Re: Gibt es schon eine Contenido Version für PHP 8

Beitrag von mikedreissig » Fr 3. Mär 2023, 20:23

Hallo Murat,

da habe ich wohl Verwirrung gestiftet, deshalb hier noch mal mehr und berichtigte Infos.

Updates bestehender Installationen (4.9.12 auf 4.10.0 auf 4.10.1 auf 4.10.1 Develop oder 4.10.1 auf 4.10.1 Develop mit dieser Version
[viewtopic.php?f=115&t=44683&p=182941&hi ... en#p182941] unter PHP 7.4, danach Umstellung auf PHP 8.1) haben das Problem des verschwundenen Reiters "Frontend-Berechtigungen" behoben.

Bei einer eben zum Testen durchgeführten Neuinstallation CONTENIDO Version 4.10.1 Develop (Stand Januar 2023 (siehe Link oben)) fehlt der Reiter "Frontend-Berechtigungen" wieder, keine Fehlermeldung hierzu.

Neuinstallation mit der aktuellsten Version bei IONOS:

CONTENIDO Version 4.10.1 Develop (Stand 03. März 2023)
Installierte PHP-Version 8.1.16
Datenbankserver-Version MySql 8.0.26

Sowohl bei einer Installation "Mandant mit Beispielmodulen und -inhalten" als auch "Mandant mit Beispielmodulen, aber ohne Beispielinhalte" (jeweils nur Benutzer sysadmin, keine Gruppen) fehlt im Bereich Frontend -> Gruppe erstellen der Reiter "Frontend-Berechtigungen". Es gibt aber keine Fehlermeldung im Errorlog, der ist komplett leer, also gab es keine Probleme bei der Installallation. Ein Setup-Errorlog existiert auch nicht.

Eine Installation "Mandant nicht anlegen" ist auch durchgelaufen, allerdings konnte ich den Bereich Frontend -> Gruppe erstellen nicht testen, da beim Erstellen einer Sprache für den neu angelegten Mandanten diese Fehlermeldung erscheint:

PHP Fatal error: Uncaught cInvalidArgumentException: Object ID must be greater than 0. in /blabla/contenido/classes/class.registry.php:661
Stack trace:
#0 /blabla/contenido/classes/class.registry.php(222): cRegistry::_fetchItemObject('cApiClient', '0')
#1 /blabla/contenido/includes/include.lang_left_top.php(24): cRegistry::getClient()
#2 blabla/contenido/main.php(212): include_once('/homepages/40/d...')
#3 {main}
thrown in /blabla/contenido/classes/class.registry.php on line 661


Grüße
Michael

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

Re: Gibt es schon eine Contenido Version für PHP 8

Beitrag von xmurrix » Sa 4. Mär 2023, 00:04

Hallo Michael,

danke für das Testen, die berichteten Fehler sind in der Entwicklungs-Branch behoben.

1. Fehler "PHP Fatal error: Uncaught cInvalidArgumentException: Object ID must be greater than 0..."
Die Überprüfung auf vorhandenen Mandanten und vorhandener Sprache wurde gefixt, siehe Commit:
https://github.com/CONTENIDO/CONTENIDO/ ... 09fdafbb66

Nun sollten im Backend alle Bereiche, die einen Mandanten und/oder eine Sprache benötigen, keine weißen Seiten oder Einträge in der Fehlerlog erzeugen, sondern eine entsprechende Meldung wie "Mandant fehlt" oder "Sprache fehlt" ausgeben.

2. Fehlender Reiter "Frontend-Berechtigungen"
Da gab es noch einen Bug, dies ist auch korrigiert:
https://github.com/CONTENIDO/CONTENIDO/ ... 546085625d

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

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

Re: Gibt es schon eine Contenido Version für PHP 8

Beitrag von mikedreissig » Sa 4. Mär 2023, 18:29

Hallo Murat,
1. Fehler "PHP Fatal error: Uncaught cInvalidArgumentException: Object ID must be greater than 0..."
Die Überprüfung auf vorhandenen Mandanten und vorhandener Sprache wurde gefixt, siehe Commit:
https://github.com/CONTENIDO/CONTENIDO/ ... 09fdafbb66
Hier gibt es noch einen Bug in der von Dir aktualisierten Datei contenido/includes/include.lang_left_top.php:

Code: Alles auswählen

// Display critical error if client does not exist
$client = cSecurity::toInteger(cRegistry::getClientId());

// if ($client < 1 || !cRegistry::getClient()->isLoaded()) {
// problem: client id is 0 here as long as no language has been created for the client in this area
// result: client selection dropdown won't be shown

// solution: check only if client has been created before
if ( !cRegistry::getClient()->isLoaded() ) {
Ansonsten werden in allen Bereichen die entsprechenden Fehlermeldungen ausgegeben, es gibt keine weissen Seiten.
2. Fehlender Reiter "Frontend-Berechtigungen"
Yup, kann ich bestätigen, der Reiter wird jetzt angezeigt

Klasse, danke!
Michael

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

Re: Gibt es schon eine Contenido Version für PHP 8

Beitrag von xmurrix » Sa 4. Mär 2023, 22:57

Hallo Michael,

der Fehler tritt auf, wenn man sich in einer leeren (ohne Mandant) CONTENIDO Installation anmeldet, einen Mandanten erstellt und dann in den Bereich 'Sprachen' wechselt.

Wenn man aber nur den Code `cRegistry::getClient()` ohne Prüfung der Id `$client` ausführt, und es gibt noch keinen Mandanten im System, endet das mit der Fehlermeldung, was wir zuvor hatten:

Code: Alles auswählen

#0 /blabla/contenido/classes/class.registry.php(222): cRegistry::_fetchItemObject('cApiClient', '0')
Der Fehler taucht in der `includes.lang_left_top.php` auf, sollte aber woanders gelöst werden. Die Id des Mandanten wird in der Session gespeichert und steht somit allen Bereichen des Backends zur Verfügung, wir müssen nur dafür sorgen, die Mandanten-Id zu aktualisieren.

Solange es keinen Mandanten gibt, ist die in der Session gespeicherte Mandanten-Id 0 kein Problem, die sollte man aber ändern, sobald man den ersten Mandanten anlegt oder in den Hauptdateien des Backends (z. B. in der `main.php`) die Id des ersten Mandanten setzen, wenn eine Id vorhanen ist, aber den Wert 0 hat. Das Ganze betrifft übrigens auch die Sprache.

Danke auf jeden Fall für den Bug-Report.

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.

Antworten