Seite 1 von 1
PHP Warning: A non-numeric value encountered
Verfasst: Mo 22. Jan 2018, 15:59
von Faar
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.
gelöst: PHP Warning: A non-numeric value encountered
Verfasst: Mo 22. Jan 2018, 16:31
von Faar
Oha, das Problem hatte ein alter Mann auch schon mal und bereits gelöst.
viewtopic.php?p=173433#p173433
Demnächst in der 4.9.13
Re: PHP Warning: A non-numeric value encountered
Verfasst: Mo 22. Jan 2018, 16:40
von rethus
Der Dateiname und die Zeile stehen in der Fehlermeldung.
Aufgerufen wird die Funktion scheinbar nur durch den Codemirror:
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]")!
Re: PHP Warning: A non-numeric value encountered
Verfasst: Mo 22. Jan 2018, 16:44
von Faar
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
Re: PHP Warning: A non-numeric value encountered
Verfasst: Mi 7. Nov 2018, 14:56
von lunsen_de
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
Re: PHP Warning: A non-numeric value encountered
Verfasst: Mi 7. Nov 2018, 15:24
von Faar
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
Re: PHP Warning: A non-numeric value encountered
Verfasst: Mi 7. Nov 2018, 16:22
von xmurrix
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
Re: PHP Warning: A non-numeric value encountered
Verfasst: Do 8. Nov 2018, 10:59
von Faar
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?
Re: PHP Warning: A non-numeric value encountered
Verfasst: Do 8. Nov 2018, 11:06
von xmurrix
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
Re: PHP Warning: A non-numeric value encountered
Verfasst: Do 8. Nov 2018, 11:12
von Faar
Re: PHP Warning: A non-numeric value encountered
Verfasst: Do 8. Nov 2018, 11:12
von Oldperl
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
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
Re: PHP Warning: A non-numeric value encountered
Verfasst: Do 8. Nov 2018, 11:20
von xmurrix
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.
Re: PHP Warning: A non-numeric value encountered
Verfasst: Mi 2. Jan 2019, 23:02
von McHubi
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.
Re: PHP Warning: A non-numeric value encountered
Verfasst: Do 3. Jan 2019, 10:01
von Faar
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.
Re: PHP Warning: A non-numeric value encountered
Verfasst: Do 3. Jan 2019, 10:14
von McHubi
Danke Dir, Faar!