Seite 1 von 1
Using php-function "trim" as a modifier is deprecated
Verfasst: Mo 8. Jul 2024, 10:14
von Bernhard_4711
Moin Zusammen,
ich habe heute diese Fehlermeldungen in meinem LOG gefunden (Duplikate gelöscht):
Code: Alles auswählen
[07-Jul-2024 18:06:52 UTC] PHP Deprecated: Using php-function "trim" as a modifier is deprecated and will be removed in a future release. Use Smarty::registerPlugin to explicitly register a custom modifier. in /var/www/btmr/contenido/plugins/smarty/smarty_source/sysplugins/smarty_internal_compile_private_modifier.php on line 112
[07-Jul-2024 18:06:52 UTC] PHP Deprecated: Using php-function "in_array" as a modifier is deprecated and will be removed in a future release. Use Smarty::registerPlugin to explicitly register a custom modifier. in /var/www/btmr/contenido/plugins/smarty/smarty_source/sysplugins/smarty_internal_compile_private_modifier.php on line 112
[08-Jul-2024 07:29:39 UTC] PHP Deprecated: Using php-function "is_array" as a modifier is deprecated and will be removed in a future release. Use Smarty::registerPlugin to explicitly register a custom modifier. in /var/www/btmr/contenido/plugins/smarty/smarty_source/sysplugins/smarty_internal_compile_private_modifier.php on line 112
Re: Using php-function "trim" as a modifier is deprecated
Verfasst: Mo 8. Jul 2024, 12:38
von xmurrix
Hallo Bernhard,
zu diesem Thema gibt es mehr Informationen im folgenden Beitrag:
viewtopic.php?f=115&t=44736&p=183315
Du solltest in den Smarty-Templates alle PHP-Funktionen, die als Modifier verwendet werden, gegen entsprechende Lösungen ersetzen.
Als zusätzliche Absicherung wurden die bekannten PHP-Funktionen als Smarty Modifier-Plugins registriert, aber ich sehe im Quellcode, dass das nicht immer der Fall ist.
Vermutlich ist das Problem bei dir behoben, wenn du die Datei contenido/plugins/smarty/classes/class.smarty.frontend.php öffnest, und am Ende der Funktion __construct() folgende Zeile hinzufügst:
Das sollte dann ungefähr so aussehen:
Code: Alles auswählen
public function __construct(&$aCfg, &$aClientCfg, $bSanityCheck = false)
{
...
self::resetPaths();
self::$bSmartyInstanciated = true;
self::registerDeprecatedPhpModifier();
}
Gruß
xmurrix
Re: Using php-function "trim" as a modifier is deprecated
Verfasst: Di 9. Jul 2024, 10:23
von Bernhard_4711
Ich habe das jetzt nicht wirklich komplett verstanden.
Allerdings kann ich keine der von Dir in dem verlinkten Beitrag genannten "variable|modifier" mehr finden.
Ich ändere die von Dir genannte Datei "contenido/plugins/smarty/classes/class.smarty.frontend.php" entsprechend ab und beobachte das.
Vielen Dank für die Hilfe.
PS: Sollte die von Dir genannte Lösung (Zitat: "Du solltest in den Smarty-Templates alle PHP-Funktionen, die als Modifier verwendet werden, gegen entsprechende Lösungen ersetzen."; Zitat Ende) nicht global und für alle erfolgen?
Oder mißverstehe ich Dich?
Re: Using php-function "trim" as a modifier is deprecated
Verfasst: Mi 10. Jul 2024, 12:44
von Oldperl
Servus,
Bernhard_4711 hat geschrieben: ↑Di 9. Jul 2024, 10:23
Sollte die von Dir genannte Lösung (Zitat: "Du solltest in den Smarty-Templates alle PHP-Funktionen, die als Modifier verwendet werden, gegen entsprechende Lösungen ersetzen."; Zitat Ende) nicht global und für alle erfolgen?
Nun, wenn Du PHP-Funktionen als Modifier in Smarty-Templates nutzt, und in neueren PHP-Versionen PHP-Funktionen als deprecated markiert werden, oder gar ganz wegfallen, so bist du als Entwickler verantwortlich dies in deinen Templates entsprechend zu ändern. Das ist nicht anders wie entsprechende Änderungen bei Modulen oder Plugins im PHP-Code.
Also nein, weder bei PHP noch bei Smarty macht es daher Sinn das zentral zu händeln. Das haben wir bei Contenido auch immer versucht, mit entsprechenden Include-Dateien für vergangene oder neue PHP-Versionen, und das wird dann irgendwann unübersichtlich, Dateien werden über viele Generationen "mitgeschleift", weil, es könnte ja sein, dass noch irgendwer das nutzt oder darauf zugreift.
Daher denke ich, wir sollten das auch im Contenido Core zukünftig anders handhaben. Auch eine Aufgabe für den CONTENIDO-Verein.
Gruß aus Franken
Ortwin
Re: Using php-function "trim" as a modifier is deprecated
Verfasst: Do 11. Jul 2024, 10:58
von Bernhard_4711
Oldperl hat geschrieben: ↑Mi 10. Jul 2024, 12:44
Nun, wenn Du PHP-Funktionen als Modifier in Smarty-Templates nutzt, und in neueren PHP-Versionen PHP-Funktionen als deprecated markiert werden, oder gar ganz wegfallen, so bist du als Entwickler verantwortlich dies in deinen Templates entsprechend zu ändern.
Das wäre dann der Entwickler von Smarty, richtig?
Re: Using php-function "trim" as a modifier is deprecated
Verfasst: Do 11. Jul 2024, 12:23
von Oldperl
Servus,
nein. Smarty bietet nur die Möglichkeit PHP-Funktionen als Modifier in Smarty-Templates zu nutzen. Smarty ist aber nicht dafür verantwortlich ob, und wann, diese PHP-Funktionen deprecated gestellt werden, oder ganz wegfallen.
Der Webdesigner oder Webentwickler, der Smarty in seinen Modulen oder Plugins unter CONTENIDO nutzt ist da dann der richtige Ansprechpartner. Dieser muss dann in seinen Templates diese Modifier ersetzen bzw. gegen andere austauschen.
Sollte es sich bei den Smarty-Templates beispielsweise um genutzte Templates in Core-Plugins oder Core-Modulen von CONTENIDO handeln, so wäre es Aufgabe der CONTENIDO-Entwickler diese Templates entsprechend zu modifizieren.
Sind es Module aus der Community, so wäre hier im Forum der entsprechende Entwickler, falls noch aktiv, der Ansprechpartner, oder man passt diese Templates gleich selbst beim Upgrade von CONTENIDO an, und stellt gerne gemachte Änderungen hier als Post ins Forum.
Gruß aus Franken
Ortwin
PS: @xmurrix Wir sollten aber eventuell nochmal schauen, inwieweit wir das Smarty-Plugin und die verwendete Smarty-Version mal updaten sollten/müssen.
Re: Using php-function "trim" as a modifier is deprecated
Verfasst: Fr 12. Jul 2024, 09:27
von xmurrix
Hallo Ortwin,
Oldperl hat geschrieben: ↑Do 11. Jul 2024, 12:23
PS: @xmurrix Wir sollten aber eventuell nochmal schauen, inwieweit wir das Smarty-Plugin und die verwendete Smarty-Version mal updaten sollten/müssen.
ja, das wäre eine Überlegung wert. Eine Aktualisierung auf Smarty 5 wäre nicht schlecht und auf die Schnelle sehe ich da keine Probleme mit der Abwärtskompatibilität.
@Bernhard_4711:
Die Anpassung, die ich hier beschrieben habe, sollte dein Problem lösen. Besser ist es aber, dass du in allen Modul-/ und Plugin-Templates nach dem Vorkommen von "$variable|trim" oder "$variable|in_array" suchst, und diese gegen entsprechende Alternativen ersetzst.
In CONTENIDO 4.10.11 kommt das z. B. in Templates von Modulen navigation_main und navigation_top vor.
Da steht z. B. folgendes drin:
Das sollte geändert werden in
In anderen Modul-Templates steht
Das ist zu ändern in
Du kannst dir auch im aktuellen Entwicklungszweig von CONTENIDO die Änderungen in den Modul-/ und Plugin-Templates ansehen, diese mit den Templates bei dir vergleichen und die Änderungen übernehmen. Einen Überblick der Änderungen findest du im folgenden Commit:
https://github.com/CONTENIDO/CONTENIDO/ ... b76683c2c7
Die aktuellen Modul-Templates findest du unter:
https://github.com/CONTENIDO/CONTENIDO/ ... ta/modules
Die aktuellen Plugin-Templates findest du unter:
https://github.com/CONTENIDO/CONTENIDO/ ... do/plugins
Gruß
xmurrix
Re: Using php-function "trim" as a modifier is deprecated
Verfasst: Fr 12. Jul 2024, 12:49
von Bernhard_4711
xmurrix hat geschrieben: ↑Fr 12. Jul 2024, 09:27
In CONTENIDO 4.10.11 kommt das z. B. in Templates von Modulen navigation_main und navigation_top vor.
Da steht z. B. folgendes drin:
Das sollte geändert werden in
In anderen Modul-Templates steht
Das ist zu ändern in
Ich habe die Änderungen vorgenommen.
Du kannst dir auch im aktuellen Entwicklungszweig von CONTENIDO die Änderungen in den Modul-/ und Plugin-Templates ansehen, diese mit den Templates bei dir vergleichen und die Änderungen übernehmen. Einen Überblick der Änderungen findest du im folgenden Commit:
Ich habe zuletzt am 21.02.2024 die damals aktuelle Version geholt und installiert.
Wird damit nicht auch automatisch alles andere mit aktualisiert?
Re: Using php-function "trim" as a modifier is deprecated
Verfasst: Fr 12. Jul 2024, 13:36
von xmurrix
Bernhard_4711 hat geschrieben: ↑Fr 12. Jul 2024, 12:49
Wird damit nicht auch automatisch alles andere mit aktualisiert?
Bei einer Neuinstallation wird alles neu installiert, handelt es sich um eine Aktualisierung, macht das Setup keine Änderungen an vorhandenen Modulen des Mandanten.
Im erstem Kommentar zu diesem Beitrag habe ich auf einen Fehler im Konstruktor der Klasse cSmartyFrontend (contenido/plugins/smarty/classes/class.smarty.frontend.php) hingewiesen und dass die Anpassung der Konstruktorfunktion das Problem eventuell lösen sollte.
Falls du die Änderung bei dir gemacht hast und seither keine Fehler mehr auftauchen, wäre das Problem somit behoben. Die Korrektur muss noch in GitHub übernommen werden.
Re: Using php-function "trim" as a modifier is deprecated
Verfasst: Sa 13. Jul 2024, 09:51
von xmurrix
Der Fehler wurde mit folgendem GitHub-Ticket bearbeitet und behoben:
https://github.com/CONTENIDO/CONTENIDO/issues/494
Re: Using php-function "trim" as a modifier is deprecated
Verfasst: Sa 13. Jul 2024, 10:07
von Bernhard_4711
Vielen Dank. Bisher trat der von mir berichtete Fehler nicht wieder auf.