it-m-h / SmallTime

Small Time
GNU Affero General Public License v3.0
42 stars 32 forks source link

Problem beim Umstieg nach PHP 8 #76

Closed boppelmuetze closed 1 year ago

boppelmuetze commented 1 year ago

Hallo,

beim Umstieg nach PHP8 bekomme ich folgende Fehler geworfen. Die Dateien habe ich schon alle ausgetauscht. Hab ich da evtl. etwas übersehen?

Errorlog:

Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /$server/htdocs/SmallTime-master/index.php on line 62 Warning: Undefined array key 21 in /$server/htdocs/SmallTime-master/index.php on line 535 Warning: Trying to access array offset on value of type null in /$server/htdocs/SmallTime-master/index.php on line 535 Warning: Undefined array key 22 in /$server/htdocs/SmallTime-master/index.php on line 53 Warning: Trying to access array offset on value of type null in /$server/htdocs/SmallTime-master/index.php on line 535 Warning: Undefined array key 27 in /$server/htdocs/SmallTime-master/index.php on line 535 Warning: Trying to access array offset on value of type null in /$server/htdocs/SmallTime-master/index.php on line 535 Warning: Undefined array key 28 in /$server/htdocs/SmallTime-master/index.php on line 535 Warning: Trying to access array offset on value of type null in /$server/htdocs/SmallTime-master/index.php on line 535 Deprecated: Implicit conversion from float 23.174599999999998 to int loses precision in /$server/htdocs/SmallTime-master/include/class_feiertage.php on line 82 Deprecated: Implicit conversion from float 19.165 to int loses precision in /$server/htdocs/SmallTime-master/include/class_feiertage.php on line 83 Deprecated: Implicit conversion from float 2575.5 to int loses precision in /$server/htdocs/SmallTime-master/include/class_feiertage.php on line 65 Deprecated: Creation of dynamic property time_jahr::$_summe_Fv is deprecated in /$server/htdocs/SmallTime-master/include/class_jahr.php on line 274 Deprecated: Creation of dynamic property time_jahr::$_summe_Fz is deprecated in /$server/htdocs/SmallTime-master/include/class_jahr.php on line 275 Deprecated: Creation of dynamic property time_jahr::$_summe_Ft is deprecated in /$server/htdocs/SmallTime-master/include/class_jahr.php on line 276 Warning: Undefined array key 27 in /$server/htdocs/SmallTime-master/include/class_jahr.php on line 286 Warning: Trying to access array offset on value of type null in /$server/htdocs/SmallTime-master/include/class_jahr.php on line 286 [...] // Die oberen zwei Zeilen wiederholen sich jetzt 154 mal Deprecated: Creation of dynamic property time_jahr::$_summe_Fgeplant is deprecated in /$server/htdocs/SmallTime-master/include/class_jahr.php on line 306 Warning: Undefined array key 27 in /$server/htdocs/SmallTime-master/include/class_jahr.php on line 332 Warning: Trying to access array offset on value of type null in /$server/htdocs/SmallTime-master/include/class_jahr.php on line 332 Warning: Undefined array key 12 in /$server/htdocs/SmallTime-master/include/class_jahr.php on line 153 Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /$server/htdocs/SmallTime-master/include/class_jahr.php on line 153 Fatal error: Uncaught TypeError: round(): Argument #1 ($num) must be of type int|float, string given in /$server/htdocs/SmallTime-master/include/class_jahr.php:68 Stack trace: #0 /$server/htdocs/SmallTime-master/include/class_jahr.php(68): round()

1 /$server/htdocs/SmallTime-master/index.php(541): time_jahr->__construct()

2 {main} thrown in /$server/htdocs/SmallTime-master/include/class_jahr.php on line 68

it-m-h commented 1 year ago

Solche Fehlermeldungen sind mir zurzeit unbekannt.

Server? (Linux, Windows?) PHP - Version?

Schritt 1: mal frisch vom Github downloaden und das tut dann? (also alles Original verwenden ohne Datenübernahme)? Schritt 2: nur Daten vom User übernehmen Schritt 3: Einstellungen übernehmen

Ich denke, so sollte man auf den Grund kommen.

boppelmuetze commented 1 year ago

Habe mir nochmals eine Testinstallation gemacht und mit drei PHP-Versionen getestet. Hier die Logs

Umgebung Server: Linux Apache/2.4.54 (Unix) PHP-Verisionen 7.4.33 / 8.0.26 / 8.1.13 / 8.2.0

Unveränderte SmallTime Version, frisch von Github ohne Daten/Einstellungen PHP 7.4

Notice: A non well formed numeric value encountered in /testzeit/include/class_jahr.php on line 128 Notice: A non well formed numeric value encountered in /testzeit/include/class_jahr.php on line 128

mit PHP 8.0/8.1 ohne Fehler

mit PHP 8.2

Deprecated: Creation of dynamic property time_jahr::$_summe_Fv is deprecated in /testzeit/include/class_jahr.php on line 274 Deprecated: Creation of dynamic property time_jahr::$_summe_Fz is deprecated in /testzeit/include/class_jahr.php on line 275 Deprecated: Creation of dynamic property time_jahr::$_summe_Ft is deprecated in /testzeit/include/class_jahr.php on line 276 Deprecated: Creation of dynamic property time_jahr::$_summe_Fgeplant is deprecated in /testzeit/include/class_jahr.php on line 306

Mit importierten Usern (ohne Einstellungen) PHP 7.4

Notice: A non well formed numeric value encountered in /testzeit/include/class_month.php on line 531 Notice: A non well formed numeric value encountered in /testzeit/include/class_month.php on line 531 Notice: A non well formed numeric value encountered in /testzeit/include/class_month.php on line 531 Notice: A non well formed numeric value encountered in /testzeit/include/class_month.php on line 531 Notice: A non well formed numeric value encountered in /testzeit/include/class_month.php on line 531 Notice: A non well formed numeric value encountered in /testzeit/include/class_month.php on line 531 Notice: Undefined offset: 11 in /testzeit/include/class_jahr.php on line 153

PHP 8.0

Warning: Undefined array key 11 in /testzeit/include/class_jahr.php on line 153 Fatal error: Uncaught Type Error: round(): Argument #1 ($num) must be of type int|float, string given in /testzeit/include/class_jahr.php:68 Stack trace:

0 /testzeit/include/class_jahr.php(68): round()

1 /testzeit/index.php(541): time_jahr->__construct()

2 {main} thrown in /testzeit/include/class_jahr.php on line 68

PHP 8.1

Warning: Undefined array key 11 in /testzeit/include/class_jahr.php on line 153 Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /testzeit/include/class_jahr.php on line 153 Fatal error: Uncaught TypeError: round(): Argument #1 ($num) must be of type int|float, string given in /testzeit/include/class_jahr.php:68 Stack trace:

0 /testzeit/include/class_jahr.php(68): round()

1 /testzeit/index.php(541): time_jahr->__construct()

2 {main} thrown in /testzeit/include/class_jahr.php on line 68

PHP 8.2

Deprecated: Creation of dynamic property time_jahr::$_summe_Fv is deprecated in /testzeit/include/class_jahr.php on line 274 Deprecated: Creation of dynamic property time_jahr::$_summe_Fz is deprecated in /testzeit/include/class_jahr.php on line 275 Deprecated: Creation of dynamic property time_jahr::$_summe_Ft is deprecated in /testzeit/include/class_jahr.php on line 276 Deprecated: Creation of dynamic property time_jahr::$_summe_Fgeplant is deprecated in /testzeit/include/class_jahr.php on line 306 Warning: Undefined array key 11 in /testzeit/include/class_jahr.php on line 153 Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /testzeit/include/class_jahr.php on line 153 Fatal error: Uncaught TypeError: round(): Argument #1 ($num) must be of type int|float, string given in /testzeit/include/class_jahr.php:68 Stack trace:

0 /testzeit/include/class_jahr.php(68): round()

1 /testzeit/index.php(541): time_jahr->__construct()

2 {main} thrown in /testzeit/include/class_jahr.php on line 68

Mit importierten Einstellungen (ohne User) PHP 7.4

Notice: Undefined offset: 21 in /testzeit/index.php on line 535 Notice: Trying to access array offset on value of type null in /testzeit/index.php on line 535 Notice: Undefined offset: 22 in /testzeit/index.php on line 535 Notice: Trying to access array offset on value of type null in /testzeit/index.php on line 535 Notice: Undefined offset: 27 in /testzeit/index.php on line 535 Notice: Trying to access array offset on value of type null in /testzeit/index.php on line 535 Notice: Undefined offset: 28 in /testzeit/index.php on line 535 Notice: Trying to access array offset on value of type null in /testzeit/index.php on line 535 Notice: Undefined offset: 27 in /testzeit/include/class_jahr.php on line 286 Notice: Trying to access array offset on value of type null in /testzeit/include/class_jahr.php on line 286 [18 identische Wiederholungen der letzten 2 Zeilen (key 27 in Zeile 286)] Notice: Trying to access array offset on value of type null in /testzeit/include/class_jahr.php on line 332 Notice: A non well formed numeric value encountered in /testzeit/include/class_jahr.php on line 128 Notice: A non well formed numeric value encountered in /testzeit/include/class_jahr.php on line 128

PHP 8.0/8.1 (identische Logs)

Warning: Undefined array key 21 in /testzeit/index.php on line 535
Warning: Trying to access array offset on value of type null in /testzeit/index.php on line 535
Warning: Undefined array key 22 in /testzeit/index.php on line 535
Warning: Trying to access array offset on value of type null in /testzeit/index.php on line 535
Warning: Undefined array key 27 in /testzeit/index.php on line 535
Warning: Trying to access array offset on value of type null in /testzeit/index.php on line 535
Warning: Undefined array key 28 in /testzeit/index.php on line 535
Warning: Trying to access array offset on value of type null in /testzeit/index.php on line 535
Warning: Undefined array key 27 in /testzeit/include/class_jahr.php on line 286
Warning: Trying to access array offset on value of type null in /testzeit/include/class_jahr.php on line 286
[20 identische Wiederholungen der letzten 2 Zeilen (key 27 in Zeile 286)] Warning: Undefined array key 27 in /testzeit/include/class_jahr.php on line 332
Warning: Trying to access array offset on value of type null in /testzeit/include/class_jahr.php on line 332

PHP 8.2

Warning: Undefined array key 21 in /testzeit/index.php on line 535
Warning: Trying to access array offset on value of type null in /testzeit/index.php on line 535
Warning: Undefined array key 22 in /testzeit/index.php on line 535
Warning: Trying to access array offset on value of type null in /testzeit/index.php on line 535
Warning: Undefined array key 27 in /testzeit/index.php on line 535
Warning: Trying to access array offset on value of type null in /testzeit/index.php on line 535
Warning: Undefined array key 28 in /testzeit/index.php on line 535
Warning: Trying to access array offset on value of type null in /testzeit/index.php on line 535 Deprecated: Creation of dynamic property time_jahr::$_summe_Fv is deprecated in /testzeit/include/class_jahr.php on line 274 Deprecated: Creation of dynamic property time_jahr::$_summe_Fz is deprecated in /testzeit/include/class_jahr.php on line 275 Deprecated: Creation of dynamic property time_jahr::$_summe_Ft is deprecated in /testzeit/include/class_jahr.php on line 276
Warning: Undefined array key 27 in /testzeit/include/class_jahr.php on line 286
Warning: Trying to access array offset on value of type null in /testzeit/include/class_jahr.php on line 286
Warning: Undefined array key 27 in /testzeit/include/class_jahr.php on line 286
[20 identische Wiederholungen der letzten 2 Zeilen (key 27 in Zeile 286)] Deprecated: Creation of dynamic property time_jahr::$_summe_Fgeplant is deprecated in /testzeit/include/class_jahr.php on line 306
Warning: Undefined array key 27 in /testzeit/include/class_jahr.php on line 332
Warning: Trying to access array offset on value of type null in /testzeit/include/class_jahr.php on line 332

it-m-h commented 1 year ago

Das muss ich mir mal bei Gelegenheit anschauen, leider fehlt mir die Zeit im Moment. Interessant, dass bei mir (8.1.10 auf Windows) das ohne Fehler läuft ...

Die meisten Meldungen dürften aber nichts mit dem Funktionieren zu tun haben. Funktioniert etwas nicht, wenn Du die Meldungen einfach mal ausschaltest? php.ini : display_errors = OFF

boppelmuetze commented 1 year ago

Mit Usern wird gar nichts angezeigt (Fatal Error), Seite bleibt komplett leer, nur deshalb bin ich überhaupt drauf gestossen.

Deprecated: explode(): Passing null to parameter https://github.com/itmastergmbh/SmallTime/issues/2 ($string) of type string is deprecated in /testzeit/include/class_jahr.php on line 153
Fatal error: Uncaught TypeError: round(): Argument https://github.com/itmastergmbh/SmallTime/issues/1 ($num) must be of type int|float, string given in /testzeit/include/class_jahr.php:68
Stack trace:
#0 /testzeit/include/class_jahr.php(68): round()
https://github.com/itmastergmbh/SmallTime/issues/1 /testzeit/index.php(541): time_jahr->__construct()
https://github.com/itmastergmbh/SmallTime/issues/2 {main} thrown in /testzeit/include/class_jahr.php on line 68
it-m-h commented 1 year ago

Interessant, ich habe gerade ein Ubuntu mit PHP 8.2 installiert. (und php-xml Extension) Danach die Rechte gesetzt zum Schreiben. Daten entpackt...... Bei mir geht das ohne Probleme (wenn ich DEBUG einschalte gibts ein, zwei Warnungen und Hinweise) Tut aber alles, wie es soll .... ein UNIX - System habe ich leider nicht zur Hand :) image

Gegenwärtig weiss ich auch nicht weiter .... ausser, dass SmallTime ja mal überarbeitet werden sollte :)

boppelmuetze commented 1 year ago

Es scheint ja mit meinen Usern zusammenzuhängen - Ich werde nächste Woche mal versuchen die User einzeln zu entfernen und zu schauen, wie es sich dann entwickelt

Die ganzen "Alten" User habe ich bereits entfernt, das Verhalten ist noch immer das gleiche.

Ich werde dann kommende Woche berichten - Guten Rutsch

it-m-h commented 1 year ago

Ach ja, es gab mal eine Zeit, da gab es Probleme mit den Settings vom Mitarbeiter (hauptsächlich Feiertage) Ev. mal zur Sicherheit den Admin einstellen und die Einstellungen von Hand in die Datei vom User übernehmen (Userdaten.txt)

Das Problem gab es mal bei einer oder zwei Versionen, wenn man die updaten wollte.

boppelmuetze commented 1 year ago

Ich hab jetzt mal rumgespielt und alles komplett neu angelegt mit nur einem User. Resultat:

(egal ob 8.0/8.1 oder 8.2)

PHP Warning:  Undefined array key 12 time/include/class_jahr.php on line 153
PHP Fatal error:  Uncaught TypeError: round(): Argument #1 ($num) must be of type int|float, string given in time/include/class_jahr.php:68
Stack trace:
#0 time/include/class_jahr.php(68): round()
#1 time/index.php(541): time_jahr->__construct()
#2 {main}
thrown in time/include/class_jahr.php on line 68

Am Quelltext probiere ich mich nächstes Jahr ;)

it-m-h commented 1 year ago

Das ist aber eigentlich nur eine Warnung. Hast du in der php.ini die Errors noch angezeigt und im Admin.php und Index.php debug auf true gestellt?

Weil das sollte nicht kommen und besagt eigentlich nur, dass halt null oder "" nicht gerundet werden kann.... Solche Fehler hats leider noch..

Klick dich mal als admin beim User durch jeden Monat im Jahr und gib mal eine Zeit ein.... Wenn das geht

Zudem Klick mal die beiden Jahresübersichten an, dann werden die Summen in den Daten berechnet.

Dann sollten die round verschwinden... Weil die summen dann vorhanden sind

boppelmuetze commented 1 year ago

bei dem fatal Error bleibt die Seite weiß, es kommt noch nicht mal der Login Screen. Die Fehler bekomme ich auch nur im Server-Log angezeigt. Die Idee war, einfach nochmal bei Null anzufangen und Alle User mit Eintritt 01.01.2023 anzulegen.

Hab mich jetzt doch kurz noch rangetraut: habe ein floatval() in das Round eingebaut, jetzt scheint es zu tun.

Leider muss ich in unserem ERP-System noch einige Fehler ausmerzen (Umlaute werden mal korrekt, mal als 'ì ausgegeben, teilweise am Screen korrekt und im PDF als Hiroglyph und umgekehrt), solange muss ich unser Produktivsystem auf 7.4 belassen. Ich hoffe, dass ich bis Mitte Januar soweit bin. Ich werde dann berichten, ob und wie es im Produktiveinsatz läuft.

Bis hierher erstmal Danke - und einen guten Rutsch!

it-m-h commented 1 year ago

Ich habe noch kleine Fehler ausgemerzt. Zudem die Daten in den Dateien bereinigt: ./Data/administrator/Timetable Bei mir erscheinen gegenwärtig keine Fehler oder Warnungen mehr, auch wenn ich Meldungen anzeigen lasse. Ich bin gespannt, wie das bei Dir aussieht.

Auch einen guten Rutsch!

boppelmuetze commented 1 year ago

Hallo und frohes neues Jahr

nach erstem oberflächlichem Test scheint es zu funktionieren

Es kommen nur noch folgende Warnungen bzgl. $_action in der index.php

Danke bislang für den Support.

PHP Notice: Undefined variable: _action in time/index.php on line 202 PHP Notice: Undefined variable: _action in time/index.php on line 230 PHP Notice: Undefined variable: _action in time/index.php on line 236 PHP Notice: Undefined variable: _action in time/index.php on line 244 PHP Notice: Undefined variable: _action in time/index.php on line 278 PHP Notice: Undefined variable: _action in time/index.php on line 284 PHP Notice: Undefined variable: _action in time/index.php on line 287 PHP Notice: Undefined variable: _action in time/index.php on line 293 PHP Notice: Undefined variable: _action in time/index.php on line 302 PHP Notice: Undefined variable: _action in time/index.php on line 316 PHP Notice: Undefined variable: _action in time/index.php on line 324 PHP Notice: Undefined variable: _action in time/index.php on line 335 PHP Notice: Undefined variable: _action in time/index.php on line 344 PHP Notice: Undefined variable: _action in time/index.php on line 352 PHP Notice: Undefined variable: _action in time/index.php on line 369 PHP Notice: Undefined variable: _action in time/index.php on line 403 PHP Notice: Undefined variable: _action in time/index.php on line 430 PHP Notice: Undefined variable: _action in time/index.php on line 438 PHP Notice: Undefined variable: _action in time/index.php on line 446 PHP Notice: Undefined variable: _action in time/index.php on line 454 PHP Notice: Undefined variable: _action in time/index.php on line 459 PHP Notice: Undefined variable: _action in time/index.php on line 464 PHP Notice: Undefined variable: _action in time/index.php on line 492 PHP Notice: Undefined variable: _action in time/index.php on line 497

it-m-h commented 1 year ago

Sollte nun auch gefixt sein..... hoffe, es geht, weil ich das nicht testen kann.

boppelmuetze commented 1 year ago

So langsam wird es ;)

PHP Deprecated:  Creation of dynamic property time_jahr::$_summe_Fv is deprecated in time/include/class_jahr.php on line 274
PHP Deprecated:  Creation of dynamic property time_jahr::$_summe_Fz is deprecated in time/include/class_jahr.php on line 275
PHP Deprecated:  Creation of dynamic property time_jahr::$_summe_Ft is deprecated in time/include/class_jahr.php on line 276
PHP Deprecated:  Creation of dynamic property time_jahr::$_summe_Fgeplant is deprecated in time/include/class_jahr.php on line 306
PHP Warning:  Undefined array key 1 in time/include/class_jahr.php on line 153
PHP Deprecated:  explode(): Passing null to parameter #2 ($string) of type string is deprecated in time/include/class_jahr.php on line 153

Zwischendrin habe ich auch noch das gehabt:

PHP Warning:  Undefined array key "oldtime" in time/index.php on line 410
PHP Warning:  Undefined array key "oldtime" in time/index.php on line 414
it-m-h commented 1 year ago

Betrifft error bei Dir: PHP Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in time/include/class_jahr.php on line 153

Im File ist auf Zeile 153 aber kein explode, erst auf 155 Frage, hast Du ev. nicht alle aktuellen files?

Und für mich halt schwierig nachzuvollziehen. xampp mit 8.2 läuft, Ubuntu (Debian-Derivat) mit apache und php 8.2 tut. Nur bei Deinem UNIX - System nicht. Ich denke ev. findest Du die Probleme schneller als dass wir hier 100-mal hin und her schreiben und sonst wäre es ev. besser, ich könnte auf Dein System zugreifen. (oder sag mir was für ein UNIX Du verwendest, dass ich das ev. bei mir einrichten könnte)

boppelmuetze commented 1 year ago

Hallo, sorry, dass ich jetzt erst Feedback gebe (Krankenstand, etc.).

Also wir haben unseren Webserver und damit auch die Zeiterfassung jetzt seit 10.01. im Produktivbetrieb mit 8.1 und parallel auch eine Woche testweise mit 8.2 und es wurden seither keine Fehler geworfen.

Zuvor hatte ich sicherheitshalber nochmals alle Dateien gegen die neuen ausgetauscht, vermutlich hatte ich eine übersehen.

Danke für den Support! PS: Ich habe unserer Buchhaltung den Hinweis auf die Kaffeekasse gegeben