PHP Warning: A non-numeric value encountered

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

PHP Warning: A non-numeric value encountered

Beitrag von Faar » Mo 22. Jan 2018, 15:59

Code: Alles auswählen

 PHP Warning:  A non-numeric value encountered in /contenido/includes/pseudo-cron.inc.php on line 253
Das müllt die Log Datei zu und ich weiß nicht, wo die Funktion parseElements() benützt wird und was für Werte dort drin stehen könnten.
Jedenfalls müssten eines oder mehrere der matches[] etwas anderes als ein Zahl enthalten.
New E_WARNING and E_NOTICE errors have been introduced when invalid strings are coerced using operators expecting numbers or their assignment equivalents. An E_NOTICE is emitted when the string begins with a numeric value but contains trailing non-numeric characters, and an E_WARNING is emitted when the string does not contain a numeric value.
Ab PHP 7.1 wird gewarnt.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

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

gelöst: PHP Warning: A non-numeric value encountered

Beitrag von Faar » Mo 22. Jan 2018, 16:31

Oha, das Problem hatte ein alter Mann auch schon mal und bereits gelöst. :roll:
viewtopic.php?p=173433#p173433

Demnächst in der 4.9.13
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: PHP Warning: A non-numeric value encountered

Beitrag von rethus » Mo 22. Jan 2018, 16:40

Der Dateiname und die Zeile stehen in der Fehlermeldung.

Aufgerufen wird die Funktion scheinbar nur durch den Codemirror:
Auswahl_515.jpg
(107.61 KiB) Noch nie heruntergeladen
Wenn du die Ursache gefunden hast, geb bitte mal ein Feedback.
ggf. wäre es dann Sinnvoll in der Funktion:

Code: Alles auswählen

function lTrimZeros($number) {
    while ($number[0] == '0') {
        $number = substr($number, 1);
    }
    return $number;
}
eine Validierung auf den Variablentyp oder ein Typecasting (int) einzubauen.


BTW (@frederic.schneider_4fb): Die Funktion parseElement gehört nach dem DRY-Prinzip überarbeitet (Stichwort "matches[6]")!
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

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

Re: PHP Warning: A non-numeric value encountered

Beitrag von Faar » Mo 22. Jan 2018, 16:44

Feedback: Das Problem ist in der 4.9.13 gelöst, Oldperl hatte es schonmal und somit ist auch der Fall vorerst erledigt:
viewtopic.php?p=173433#p173433

Hier die Issues dazu:
https://issues.contenido.org/browse/CON-2717

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: PHP Warning: A non-numeric value encountered

Beitrag von lunsen_de » Mi 7. Nov 2018, 14:56

Hallo,
ich habe die Fehlermeldung in einer neu installierten Version von Contenido 4.9.12 auf einem Strato Account (Hier läuft PHP 7.1).
Nachdem ich Oldperl Lösung eingebaut habe:
Datei contenido/includes/pseudo-cron.inc.php (Zeile 214 ff) die Funktion lTrimZeros($number) durch folgendes ersetzen:

Code: Alles auswählen

/**
*
* @param int $number
* @return string
*/
function lTrimZeros($number) {
while ($number[0] == '0') {
$number = cString::getPartOfString($number, 1);
}
if(empty($number)) {
$number = 0;
}
return (int) $number;
}
Ist die Seite bei Aufruf im Fronend weiß (ohen Inhalt).

In der Errorlog steht dann:

Code: Alles auswählen

[07-Nov-2018 13:53:37 UTC] PHP Fatal error:  Uncaught Error: Call to undefined method cString::getPartOfString() in /.../htdocs/contenido/includes/pseudo-cron.inc.php:221
Stack trace:
#0 /.../htdocs/contenido/includes/pseudo-cron.inc.php(256): lTrimZeros('0')
#1 /.../htdocs/contenido/includes/pseudo-cron.inc.php(431): parseElement('0', Array, 60)
#2 /.../htdocs/contenido/includes/pseudo-cron.inc.php(175): runJob(Array, '/mnt/web401/d1/...', '/mnt/web401/d1/...', 1, false)
#3 /.../htdocs/contenido/includes/api/functions.api.general.php(109): include_once('/mnt/web401/d1/...')
#4 /.../htdocs/contenido/includes/frontend/include.front_content.php(61): cInclude('includes', 'pseudo-cron.inc...')
#5 /.../htdocs/cms/front_content.php(61): include('/mnt/web401/d1/...')
#6 {main}
  thrown in /.../htdocs/contenido/includes/pseudo-cron.inc.php on line 221
(Pfade habe ich ersetzt durch ...)
Hat jemand eine Idee?

Gruß lunsen_de

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

Re: PHP Warning: A non-numeric value encountered

Beitrag von Faar » Mi 7. Nov 2018, 15:24

lunsen_de hat geschrieben:
Mi 7. Nov 2018, 14:56

Hat jemand eine Idee?
In der Klasse cString gibt es gar keine Methode (Funktion) die "getPartOfString" heißt. Und schon gar keine public static, die sich mit cString::getPartOfString() aufrufen ließe.
https://api.contenido.org/latest/source ... tring.html
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

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

Re: PHP Warning: A non-numeric value encountered

Beitrag von xmurrix » Mi 7. Nov 2018, 16:22

lunsen_de hat geschrieben:
Mi 7. Nov 2018, 14:56
...ich habe die Fehlermeldung in einer neu installierten Version von Contenido 4.9.12 auf einem Strato Account (Hier läuft PHP 7.1).
Nachdem ich Oldperl Lösung eingebaut habe...
Bei dieser CONTENIDO-Installation wird das CMS wohl nicht korrekt initialisiert, die Funktion getPartOfString() existiert in der Datei class.string.multi.byte.wrapper.php und die wird ziemlich am Anfang geladen.

Du schreibst, dass du die Lösung von Oldperl verwendest. Frag bei ihm mal nach, was er da anders gemacht hat, wir können das hier nicht wissen, was er da alles an den Sourcen ändert oder auch nicht.

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.

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

Re: PHP Warning: A non-numeric value encountered

Beitrag von Faar » Do 8. Nov 2018, 10:59

xmurrix hat geschrieben:
Mi 7. Nov 2018, 16:22
... die Funktion getPartOfString() existiert in der Datei class.string.multi.byte.wrapper.php und die wird ziemlich am Anfang geladen.
In der api Doku von Contenido habe ich diese Classe nicht gefunden. Wie muss ich da suchen? :|
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

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

Re: PHP Warning: A non-numeric value encountered

Beitrag von xmurrix » Do 8. Nov 2018, 11:06

Faar hat geschrieben:
Do 8. Nov 2018, 10:59
...In der api Doku von Contenido habe ich diese Classe nicht gefunden. Wie muss ich da suchen?...
Die Klasse cString erbt von cStringMultiByteWrapper und diese Klasse ist vermutlich erst ab 4.9.12 hinzugekommen. Die Api-Doku ist die von 4.9.11.

Nachtrag:
Die Klasse cStringMultiByteWrapper ist noch nicht in einer offiziellen Lieferung vorhanden, sie ist in der CONTENIDO develop-Branch
https://git.contenido.org/projects/CON/ ... ido/browse
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: PHP Warning: A non-numeric value encountered

Beitrag von Faar » Do 8. Nov 2018, 11:12

Hier im Developer scheint die Klasse zu sein: https://git.contenido.org/projects/CON/ ... rapper.php

Aber hier im Master finde ich sie nicht:
https://git.contenido.org/projects/CON/ ... s%2Fmaster
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

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

Re: PHP Warning: A non-numeric value encountered

Beitrag von Oldperl » Do 8. Nov 2018, 11:12

xmurrix hat geschrieben:
Mi 7. Nov 2018, 16:22
Du schreibst, dass du die Lösung von Oldperl verwendest. Frag bei ihm mal nach, was er da anders gemacht hat, wir können das hier nicht wissen, was er da alles an den Sourcen ändert oder auch nicht.
Solltet ihr aber, zumal es um Änderungen die 4.9.13 betreffend geht :arrow: viewtopic.php?p=173433#p173433
Wobei diese dann auch nur in der dort angegeben Vorabversion funktionieren.
Faar hat geschrieben:
Do 8. Nov 2018, 10:59
In der api Doku von Contenido habe ich diese Classe nicht gefunden. Wie muss ich da suchen? :|
1. Ist diese Funktion noch nicht in einer 4.9.11, und eine neuer API-Dok gibt es nicht, und 2. bezieht sich diese Änderung auf die von Frederic herausgegebene Vorabversion der 4.9.13 und wurde von mir auch im entsprechenden Thread gepostet (siehe oben).

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

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

Re: PHP Warning: A non-numeric value encountered

Beitrag von xmurrix » Do 8. Nov 2018, 11:20

Faar hat geschrieben:
Do 8. Nov 2018, 11:12
Hier im Developer scheint die Klasse zu sein: https://git.contenido.org/projects/CON/ ... rapper.php

Aber hier im Master finde ich sie nicht:
https://git.contenido.org/projects/CON/ ... s%2Fmaster
Die Klasse ist in der CONTENIDO develop-Branch
https://git.contenido.org/projects/CON/ ... ido/browse
also noch nicht in einer offizieller Version draußen.
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.

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

Re: PHP Warning: A non-numeric value encountered

Beitrag von McHubi » Mi 2. Jan 2019, 23:02

Hallo zusammen,

und wie bekommen wir die Kuh dann jetzt vom Eis?

Den Fix von Oldperl habe ich in der pseudo-cron.inc.php angewendet. Ergebnis wie bei bei lunsen_de: Weiße Seite im Frontend. Dann habe ich die fehlende Klasse /contenido/classes/class.string.multi.byte.wrapper.php manuell aus dem git gezogen und angelegt (Zeichenkodierung mit UTF-8 ist korrekt) und in meiner Naivität gehofft, dass das Problem damit durch wäre. Ergebnis ist aber weiterhin eine weiße Seite, weil die Klasse vermutlich noch irgendwo eingebunden werden muss.

Die Lösung scheint zu sein, in der pseude-cron.inc.php einfach

Code: Alles auswählen

function lTrimZeros($number) {
    while ($number[0] == '0') {
        $number = substr($number, 1);
    }
    return $number;
}
zu ergänzen mit

Code: Alles auswählen

function lTrimZeros($number) {
    while ($number[0] == '0') {
        $number = substr($number, 1);
    }
if(empty($number)) {
$number = '0';
}
    return $number;
}
Wichtig sind die '' um die Null, denn ohne wird im Errorlog ein Fehlerstack erzeugt.
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)

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

Re: PHP Warning: A non-numeric value encountered

Beitrag von Faar » Do 3. Jan 2019, 10:01

McHubi hat geschrieben:
Mi 2. Jan 2019, 23:02
und wie bekommen wir die Kuh dann jetzt vom Eis?
Gar nicht darüber nachdenken und nicht die 4.9.12 mit der 4.9.13 vermischen, das ist so nicht kompatibel.
Stattdessen die 2018 aktualisierte 4.9.12 Master für PHP 7.2 nehmen.
http://git.contenido.org:7990/projects/ ... s%2Fmaster

Eigentlich reicht es da schon, wenn man die Dateien hoch lädt.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

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

Re: PHP Warning: A non-numeric value encountered

Beitrag von McHubi » Do 3. Jan 2019, 10:14

Danke Dir, Faar! :D
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)

Antworten