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?
mikedreissig
Beiträge: 84
Registriert: Di 10. Jan 2006, 19:28
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von mikedreissig »

Hallo Murat,
kannst du das Problem etwas näher definieren, werden die Klicks nicht in der Datenbank gespeichert oder werden sie nicht korrekt angezeigt?
Es werden Klicks in der Datenbank gespeichert, aber für z.B. die Startseite (in "con_stat_archive") waren es im Monat vor dem Update 1668, nach dem Update monatlich 26, 25 usw.. Wenn ich die Startseite aufrufe, werden meine Aufrufe korrekt in die Datenbank ("con_stat") geschrieben und korrekt in der Anzeige der Statistik in Contenido ausgegeben.

Mir ist schon klar, dass die meisten Klicks von Suchmaschinen kommen, aber es gibt bei dem Projekt auch nach dem Update eine funktionierende XML-Sitemap und eine robots.txt mit Hinweis auf die Sitemap.xml.

Grüße
Michael
xmurrix
Beiträge: 3197
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 1 Mal
Danksagung erhalten: 8 Mal
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von xmurrix »

Hallo Michael,
mikedreissig hat geschrieben: Mi 10. Mai 2023, 16:49 Es werden Klicks in der Datenbank gespeichert, aber für z.B. die Startseite (in "con_stat_archive") waren es im Monat vor dem Update 1668, nach dem Update monatlich 26, 25 usw..
kannst du bitte prüfen, ob Aufrufe anderer Seiten auch gespeichert werden?
Das ganze passiert in der contenido/includes/frontend/include.front_content.php zwischen den Zeilen 627 - 631:

Code: Alles auswählen

    if (getSystemProperty('stats', 'tracking') != 'disabled' && cRegistry::isTrackingAllowed()) {
        // Statistic, track page hit
        $oStatColl = new cApiStatCollection();
        $oStatColl->trackVisit($idcatart, $lang, $client);
    }
Gruß
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.
Bernhard_4711
Beiträge: 144
Registriert: Do 25. Jul 2019, 16:08
Hat sich bedankt: 5 Mal
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von Bernhard_4711 »

lunsen_de hat geschrieben: Mi 10. Mai 2023, 15:30 Gibt es schon etwas zum Problem mit strftime()?
Nein. Das ist auch kein Fehler, sondern eine Warnung:

Code: Alles auswählen

        // All strftime formats start with a '%', check for this!
        if ($format[0] === '%') {
            // strftime() is deprecated as of PHP 8.1, check the version
            if (version_compare(PHP_VERSION, '8.1.0') >= 0) {
                cDeprecated('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.');
                // Use date() as fallback
                return date(self::strftimeToDate($format), $timestamp);
            } else {
                // Use strftime for PHP < 8.1.0
                return strftime($format, $timestamp);
            }
        } else {
            return date($format, $timestamp);
        }
Wie Du sehen kannst, wird als "fallback" date() genommen, also läuft die Routine fehlerfrei durch!
Ich habe die Warnungen abgestellt (das kannte ich auch schon), allerdings ist es doch sicher von Vorteil, wenn der Grund der Warnungen beseitigt wird.
Das ist leider nicht so ganz trivial, da doch viele "Altlasten" im Code stecken. Die Entwickler fummeln das nach und nach raus.
Bei den .htaccess Dateien habe ich nur die beiden in den data Ordnern gefunden
Im Original-Code existieren sieben Dateien mit dem Inhalt.
Kannst du kurz erläutern, was der ursprüngliche Inhalt für Fehler verursacht hat bzw. was jetzt damit verbessert wird?
Der ursprüngliche Code wird schlicht nicht mehr unterstützt.
---
Munterbleiben... Bernhard
mikedreissig
Beiträge: 84
Registriert: Di 10. Jan 2006, 19:28
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von mikedreissig »

Hallo Murat,
kannst du bitte prüfen, ob Aufrufe anderer Seiten auch gespeichert werden?
Ja, Aufrufe anderer Seiten und Unterseiten werden auch korrekt gespeichert, sowohl mit Mod-Rewrite als auch ohne.

Grüße
Michael
lunsen_de
Beiträge: 300
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von lunsen_de »

Hallo, ich muss nochmal das Thema mit strftime aufgreifen,

ich habe alle 7 htaccess Dateien angepasst (Require all denied).
Dann habe ich

Code: Alles auswählen

$cfg['php_error_reporting'] = E_ALL & ~(E_STRICT | E_NOTICE | E_DEPRECATED | E_WARNING);
eingestellt.

Trotzdem entsteht noch eine deprecatedlog.txt, die sich bei jedem Seitenaufruf füllt. Das führt zu einer großen Datei, wenn bei jedem Aufruf 50kb hinzukommen.

Code: Alles auswählen

Deprecated call: formatToDate() [class.date.php(189)]: "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(266)
	_formatDate() called in file class.content.type.date.php(94)
	__construct() called in file class.code.generator.abstract.php(393)
	_processCmsTags() called in file class.code.generator.standard.php(162)
	_generate() called in file class.code.generator.abstract.php(222)
	generate() called in file functions.con2.php(61)
	conGenerateCode() called in file include.front_content.php(543)
	include() called in file front_content.php(43)
Wenn die Meldung, wie geschrieben nur eher als Hinweis zu sehen ist, wie kann man die Generierung der deprecatedlog.txt abschalten?

Grüße Lars
bodil
Beiträge: 364
Registriert: Fr 7. Okt 2011, 04:10
Danksagung erhalten: 2 Mal
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von bodil »

Meldungen die dort landen, werden von Contenido erzeugt. (PHP kann solche Hinweise auch generieren, die landen aber im regulären Errorlog.)
Der Hinweis in der deprecatedlog.txt kommt in deinem Fall aus der Methode formatToDate() in der Datei contenido/classes/class.date.php. Da kannst du den Aufruf der Funktion cDeprecated(...) auskommentieren.
lunsen_de
Beiträge: 300
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von lunsen_de »

Hallo, da ich Nichts falsch machen will, kannst du mir noch sagen, welche Zeilen ich auskommentieren muss?

Code: Alles auswählen

// All strftime formats start with a '%', check for this!
        if ($format[0] === '%') {
            // strftime() is deprecated as of PHP 8.1, check the version
            if (version_compare(PHP_VERSION, '8.1.0') >= 0) {
                cDeprecated('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.');
                // Use date() as fallback
                return date(self::strftimeToDate($format), $timestamp);
            } else {
                // Use strftime for PHP < 8.1.0
                return strftime($format, $timestamp);
            }
        } else {
            return date($format, $timestamp);
        }
Ist die Meldung dann komplett weg? Hat das noch andere Auswirkungen?

Danke. Grüße Lars
bodil
Beiträge: 364
Registriert: Fr 7. Okt 2011, 04:10
Danksagung erhalten: 2 Mal
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von bodil »

mach mal vor

Code: Alles auswählen

cDeprecated 
ein und nach

Code: Alles auswählen

localization support.');
ein Du kannst solche Meldungen auch generell verhindern, in dem du in einer Config-Datei die Zeile

Code: Alles auswählen

$cfg['debug']['log_deprecations'] = false;
einfügst.
Zuletzt geändert von bodil am Fr 30. Jun 2023, 13:05, insgesamt 1-mal geändert.
lunsen_de
Beiträge: 300
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von lunsen_de »

Hallo, danke für die Infos.

Variante 1 scheint funktioniert zu haben.

Müsste bei der Config Variante nicht noch ein Semikolon dahinter?

Grüße Lars
bodil
Beiträge: 364
Registriert: Fr 7. Okt 2011, 04:10
Danksagung erhalten: 2 Mal
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von bodil »

Ja, Mist, da war aber noch mehr falsch ... ich habe das mal an Ort und Stelle korrigiert ...
lunsen_de
Beiträge: 300
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von lunsen_de »

Hallo,

ich habe gerade wieder etwas seltsames entdeckt.

Contenido von Develop Branch
PHP 8.2.8

Wenn ich im Artikel Editor ein Bild auswähle ist alles ok.
Wenn ich allerdings bei einem gewählten image auf "kein" klicke und bestätige, wird mir im Editormodus kein Bild angezeigt. Klicke ich dann auf Vorschau oder ergänze im Artikel einen Text und speichere ist die alte Auswahl wieder da. Ich kann im Imagemodul nicht auf "kein" stellen!

Es gibt keine Fehlermeldung in der Errorlog. Wenn ich eine bestehende Bildauswahl auf ein anderes Image wechsle klappt das wie gewohnt, nur die Auswahl kein hat keinen Bestand.

Ist das ein Bug, der mit PHP 8.2 zusammenhängt?

Grüße Lars
Faar
Beiträge: 1945
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Hat sich bedankt: 3 Mal
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von Faar »

Mit PHP 8.2 funktioniert Contenido noch nicht, wurde mir gesagt.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.
lunsen_de
Beiträge: 300
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von lunsen_de »

Hallo,

laut README:
|>= 8.2.0|[DE] Entwicklungs-Branch größtenteils funktionsfähig (\*) / [EN] Develop branch mostly functional (\*)|
und die Entwicklung soll ja sicher weitergehen. Deshalb teste ich und melde Probleme, Anregungen u.ä.

Kann jemand das Problem nachstellen bzw. beheben?

PS: Unter PHP 8.0 und 8.1 habe ich das selbe Problem. Und da es auch bei 7.4 so ist, denke ich, dass es an der Develop Version liegen könnte, oder?

Grüße Lars
Faar
Beiträge: 1945
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Hat sich bedankt: 3 Mal
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von Faar »

lunsen_de hat geschrieben: Do 20. Jul 2023, 12:27
|>= 8.2.0|[DE] Entwicklungs-Branch größtenteils funktionsfähig (\*) / [EN] Develop branch mostly functional (\*)|
hm... :?
und die Entwicklung soll ja sicher weitergehen.
Ja, und praktisch wäre eine 4.10.2 bereits fertig zur Veröffentlichung, alles was noch zu tun wäre, wurde in die 4.10.3 verschoben.
Nur, wir haben noch nicht den Verein, der die 4.10.2 veröffentlicht und wer sonst wollte die Verantwortung dafür übernehmen?
Deshalb teste ich und melde Probleme, Anregungen u.ä.
super 8)
Kann jemand das Problem nachstellen bzw. beheben?
So richtig habe ich das Problem nicht verstanden aber vermutlich liegt es dann am Image-Modul.
Grüße Lars
Grüße Frank
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.
lunsen_de
Beiträge: 300
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Re: CONTENIDO unter PHP8 und MariaDB10

Beitrag von lunsen_de »

Hallo,
So richtig habe ich das Problem nicht verstanden aber vermutlich liegt es dann am Image-Modul.
Also es ist eine Standard Installation des Develop Branch (Beispielmandant mit Modulen) und ich kann beim Image Modul die Auswahl eines zuvor gewählten Bildes nicht auf "Kein" ändern. Nach dem Speichern oder Vorschau klicken ist das zuletzt gewählte Bild wieder da.

Beispiel: Ich habe einen veröffentlichten Artikel und möchte das Bild im Nachgang entfernen. Dies geht nicht, da nach der Auswahl "kein", speichern und auf Vorschau klicken das Bild wieder da ist.
Da es das Standard Image Modul ist und es unter 7.4, 8.0, 8.1 und 8.2 nicht funktioniert sollte es nicht am Modul liegen, sondern evtl. am Develop Branch.

Habe gerade auf dem selben Server noch eine Develop Branch Installation (mit PHP 7.4) aus 02.2022 gefunden. Hier ist die Funktion wie immer nutzbar. Muss also etwas im aktuellen Develop Branch von 03.2023 anders sein.

Ist es so verständlich?

Grüße Lars
Antworten