Seite 5 von 6

Re: CONTENIDO unter PHP8 und MariaDB10

Verfasst: Mi 10. Mai 2023, 16:49
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

Re: CONTENIDO unter PHP8 und MariaDB10

Verfasst: Do 11. Mai 2023, 10:17
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

Re: CONTENIDO unter PHP8 und MariaDB10

Verfasst: Do 11. Mai 2023, 11:36
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.

Re: CONTENIDO unter PHP8 und MariaDB10

Verfasst: So 14. Mai 2023, 18:15
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

Re: CONTENIDO unter PHP8 und MariaDB10

Verfasst: Do 29. Jun 2023, 11:59
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

Re: CONTENIDO unter PHP8 und MariaDB10

Verfasst: Fr 30. Jun 2023, 07:05
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.

Re: CONTENIDO unter PHP8 und MariaDB10

Verfasst: Fr 30. Jun 2023, 08:44
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

Re: CONTENIDO unter PHP8 und MariaDB10

Verfasst: Fr 30. Jun 2023, 09:51
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.

Re: CONTENIDO unter PHP8 und MariaDB10

Verfasst: Fr 30. Jun 2023, 12:36
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

Re: CONTENIDO unter PHP8 und MariaDB10

Verfasst: Fr 30. Jun 2023, 13:06
von bodil
Ja, Mist, da war aber noch mehr falsch ... ich habe das mal an Ort und Stelle korrigiert ...

Re: CONTENIDO unter PHP8 und MariaDB10

Verfasst: Do 20. Jul 2023, 08:37
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

Re: CONTENIDO unter PHP8 und MariaDB10

Verfasst: Do 20. Jul 2023, 11:41
von Faar
Mit PHP 8.2 funktioniert Contenido noch nicht, wurde mir gesagt.

Re: CONTENIDO unter PHP8 und MariaDB10

Verfasst: Do 20. Jul 2023, 12:27
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

Re: CONTENIDO unter PHP8 und MariaDB10

Verfasst: Do 20. Jul 2023, 13:03
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

Re: CONTENIDO unter PHP8 und MariaDB10

Verfasst: Do 20. Jul 2023, 13:27
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