WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 04.03.2017 09:45:42

evaki
Gast

[Erledigt] PHP Errorlevel

>>Was ist eigentlich der Unterschied zwischen E_EVERYTHING und E_ALL?
Gute Frage > PHP 5 Error  Functions
Und wo ist da "E_EVERYTHING"? E_EVERYTHING dürfte WB-Intern level '-1' sein.
E_EVERYTHING ist möglicherweise nur unter zend_errors (2010) zu finden. Ich weiß es aber nicht. Irgendwo in der Vergangenheit hat sich jemand was dabei gedacht.
MfG. Evaki

Beitrag geändert von evaki (04.03.2017 09:54:03)

#2 08.03.2017 19:34:17

cwsoft
Mitglied

Re: [Erledigt] PHP Errorlevel

WB intern wird der PHP Funktion error_reporting() seit Anbeginn der Zeit ein Integerwert, statt der PHP Konstanten selbst (z.B. E_ALL) übergeben.

E_ALL wurde aber mit neueren PHP Versionen des öfteren ein neuer Integerwert zugewiesen (32767 in PHP 5.4.x, 30719 in PHP 5.3.x, 6143 in PHP 5.2.x, 2047 davor). Das ist blöd, da WB ja immer nur einen Wert setzt und somit die eingesetzte PHP Version schlicht ignoriert. Das hatte bei WB 2.8 einmal dazu geführt, dass E_ALL bei neueren PHP Versionen gar keinen Fehler anzeigte - blöd.

Also wurde im WB Umfeld E_EVERYTHING ersonnen. Dies ist keine PHP Fehlerkonstante, sondern eine WB/WBCE Erfindung. Intern wird dafür die neg. Ganzzahl -1 gesetzt. Die PHP Funktion errror_reporting() erwartet eigentlich positive Integerwerte, bzw. Konstanten, welche über Bitoperationen (~, &, | etc.) verknüpft werden können (z.B. Fehler aber keine Warnungen). Die -1 sollte PHP intern bewirken das alle Bits gesetzt werden. Dies muss aber nicht immer auf allen Systemen/Umständen funktionieren, wie im Kommentar der Funktion auf php.net hier beschrieben.

Am einfachsten wäre es, statt festen Integerwerten einfach die PHP Konstanten an PHP zu übergeben (wie auf php.net auch beschrieben) und gut. Auf Systemen wo E_EVERYTHING (-1) keine Fehler anzeigt, sollte auf E_ALL | E_STRICT für die Entwicklung gesetzt werden.

Ergo. Integerwerte WBCE intern durch PHP Konstanten ersetzen und gut.

P.S.: E_STRICT ist seit PHP 5.4 bereits in E_ALL integriert, nicht aber in früheren PHP Versionen

Beitrag geändert von cwsoft (09.03.2017 21:43:42)


Account inactive since 2018/11/17.

Offline

#3 09.03.2017 06:57:53

florian
Administrator

Re: [Erledigt] PHP Errorlevel

Thema aus dem Ursprungsthread herausgelöst.
+1 von mir für das Ersetzen der Integerwerte


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#4 09.03.2017 10:10:46

evaki
Gast

Re: [Erledigt] PHP Errorlevel

Und ich hab' mal geschaut wieso da "ein Schnipsel mit E_EVERYTHING und Zend" haften geblieben ist. Ja, ja, das Langzeitgedächtnis, aber gerade vergessen wo der Schlüssel liegt yikes
MfG. Evaki

Beitrag geändert von evaki (09.03.2017 10:13:39)

#5 09.03.2017 12:05:41

webbird
Administrator

Re: [Erledigt] PHP Errorlevel

WB Classic = Microsoft??? Wir erfinden was eigenes statt wie alle anderen auch die Regeln zu befolgen???


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#6 09.03.2017 21:43:19

cwsoft
Mitglied

Re: [Erledigt] PHP Errorlevel

@webbird: Im OS-Umfeld ist das "Not-invented-here" Syndrom des öfteren zu finden.
Erstmalig wurden feste Integer Werte für PHP Error Level mit WB 2.7 (Commit vom 16.01.2008) eingeführt. Seither wurde es halt mitgeschleppt und wie an vielen anderen Stellen des Core auch (da nehme ich mich übrigens nicht aus) die Symptome statt die Ursachen behoben.

Es gibt in PHP übrigens auch keine Konstante E_NONE, das ist wie E_EVERYTHING eine WB/WBCE Erfindung.
Auch die Beschreibung der Error Level im Backend ist meiner Meinung nach falsch. Statt E_ALL & E_STRICT, müsste es korrekt E_ALL | E_STRICT heissen.

Vorschlag:

Productive --> 0
Developer --> E_ALL (seit PHP 5.4 alle Warnungen inkl. E_STRICT)
Developer --> E_ALL | E_STRICT (für PHP < 5.4, Minimumanforderung: >= 5.3.6)
Moderate --> E_ALL & ~E_STRICT

Alternativ könnte man Moderate auch auf: E_ALL & ~E_STRICT & ~ E_NOTICE setzen.

Meinungen dazu?

Beitrag geändert von cwsoft (09.03.2017 21:59:10)


Account inactive since 2018/11/17.

Offline

#7 09.03.2017 22:01:35

florian
Administrator

Re: [Erledigt] PHP Errorlevel

Eine Hauptidee von WBCE ist ja, es dem Nicht-Nerd so einfach wie möglich zu machen. Ich wäre dafür, in Punkto Fehlermeldungen zukünftig menschliche Sprache zu verwenden: "Fehlermeldungen generell unterdrücken", "nur Fehler anzeigen", "alle Fehler und Hinweise anzeigen". Und das dann im Hintergrund mit den betr. Konstanten zu verknüpfen.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

Liked by:

better-work

#8 09.03.2017 22:41:14

cwsoft
Mitglied

Re: [Erledigt] PHP Errorlevel

@Florian. Darauf basierte mein Post. Sprich es wird nur der Zweck (Testumgebung, Produktivumgebung), bzw. Beschreibung (nichts, alles, nur Fehler) angezeigt und intern dann die PHP Fehlerkonstanten gesetzt.

Denke neben diesen drei Modi sollte es dann noch den Systemdefault geben, der den Wert aus der php.ini etc. ausliest und setzt. Den könnte man z.B. über die config.php bei Bedarf überschreiben. Fürs Debugen gibt es ja noch die undokumentierte WB_DEBUG in der config.php. Auch wird noch an ca. 6-10 anderen Stellen (Module, Inkludes, Core selbst) während der Laufzeit das error_reporting mehrfach neu gesetzt, teils überschrieben.

Auch die gilt es zu Berücksichtigen.


Account inactive since 2018/11/17.

Offline

#9 10.03.2017 10:52:50

webbird
Administrator

Re: [Erledigt] PHP Errorlevel

Mir war das auch nicht bewußt, wir schleppen das in BC auch noch mit. Ich hab mich zwar mehrfach gewundert warum wir da Integerwerte benutzen, dachte dann aber immer "na Hauptsache es funktioniert..."

Werde das für BC2 auch ändern. Daher danke für den Hinweis!

Den Vorschlag von florian und cwsoft finde ich gut, der Developer kann seinen Errorlevel immer noch manuell setzen.


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#10 11.03.2017 10:35:44

cwsoft
Mitglied

Re: [Erledigt] PHP Errorlevel

Spräche etwas dagegen für WBCE 1.2.0 die PHP Mindestvoraussetzungen von PHP 5.3.6 auf PHP 5.4 oder bessor noch gleich auf PHP 5.6 zu erhöhen?

Hintergrund: Alle Versionen bis einschliesslich PHP 5.5 haben bereits End of Live erreicht und bekommen keine Sicherheitsfixes mehr. PHP 5.6 bekommt noch bis 1.1.2019 Sicherheitsfixes. Aktive Entwicklung findet nur noch in PHP 7 und 7.1 statt.

http://php.net/supported-versions.php


Account inactive since 2018/11/17.

Offline

#11 11.03.2017 11:02:06

colinax
Developer

Re: [Erledigt] PHP Errorlevel

Die Mindestvoraussetzungen auf 5.4 hochstufen, finde ich sinnvoll, höher sollten wir noch nicht gehen.

Aber wenn wir sagen dass mit jeder neu unterstützten PHP Version die Mindestvoraussetzungen hochstufen ( also mit Support für 7.2 auf 5.5 hochstufen usw.) wäre vertretbar.

Offline

#12 11.03.2017 11:17:40

cwsoft
Mitglied

Re: [Erledigt] PHP Errorlevel

Minimum 5.4.0 wäre extrem sinnvoll.

Dort wurden z.B. register_globals, magic_quotes, safe_mode, break/continue $level entfernt und der Default Charset auf UTF-8 gesetzt ...

Würde den Spagat zwischen WBCE soll "Narrensicher" und "sicher" sein aber nicht mehr allzuweit aufspreizen. PHP 5.6 wäre meines Erachtens schon zeitgemäss. Zumal wohl 98% der Hoster mittlerweile zumindest PHP 5.6.x im Packet anbieten.

Beitrag geändert von cwsoft (11.03.2017 11:21:23)


Account inactive since 2018/11/17.

Offline

#13 11.03.2017 11:41:32

florian
Administrator

Re: [Erledigt] PHP Errorlevel

Gibt es einen zwingenden technischen Grund für die Hochstufung - also abgesehen vom EOL?
Ich gebe auch zu bedenken, dass viele Module mit neueren PHP-Versionen nicht laufen und erstmal dort ggf. ein gründlicher Review/Updates stattfinden müssten.
Nebenbei: bei BPlaced ist derzeit PHP 5.5 die neueste verfügbare Version.
Wenn's sein muss, können wir 5.4 als Mindestvoraussetzung festlegen.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#14 11.03.2017 12:05:42

cwsoft
Mitglied

Re: [Erledigt] PHP Errorlevel

florian schrieb:

Gibt es einen zwingenden technischen Grund für die Hochstufung - also abgesehen vom EOL?

Ja, zumindest auf PHP 5.4, da dort viele teils sicherheitsrelevante PHP Einstellungen nicht mehr enthalten sind, UTF-8 Default ist und einige neue Sprachkonstrukte (Array Kurzform etc.) eingeführt werden, die vermehrt in Modulen verwendet werden.

Ausserdem wurde der Error Level (E_ALL) in PHP 5.4 das letzte mal geändert (bis PHP 7.1 gleichgeblieben).

Beitrag geändert von cwsoft (11.03.2017 12:08:19)


Account inactive since 2018/11/17.

Offline

#15 11.03.2017 12:16:41

florian
Administrator

Re: [Erledigt] PHP Errorlevel

Okay, dann 5.4


Code allein macht nicht glücklich. Jetzt spenden!

Offline

Liked by:

cwsoft, colinax

#16 11.03.2017 13:24:48

bernd
Developer

Re: [Erledigt] PHP Errorlevel

Min. 5.4 fände ich schon sehr sinnvoll, hätte aber gegen 5.6 auch nichts einzuwenden ;-)
Da mein Hoster im Herbst den Support für Versionen < 5.4 einstellt, habe ich die Tage für alle Seiten erbarmungslos die PHP-Versionen hochgesetzt.
Die aktuellen WBCE gleich auf 7.0 und die WB und Lepton Altlasten auf 5.6
Bisher absolut problemlos, lediglich bei einer Lepton-Seite hat ein "Uralt CKE" bischen rumgespackt, da hatte jemand im pagelink-plugin zum debugen den error_level hochgesetzt, was unter 5.6 fleißig deprecated Meldungen erzeugte die den "Pagelink"-Dialog lahmlegten ;-))


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

#17 31.05.2017 15:31:38

colinax
Developer

Re: [Erledigt] PHP Errorlevel

Mit dem Stand von Heute, wird WBCE ab 1.3.0 PHP Fehlerkonstanten statt Integerwerte verwenden und enthält einfach lesbare PHP-Fehlereinstellungen.

Die PHP Mindestanforderung wurden zudem auf PHP 5.4.0 hochgeschraubt.

[Erledigt]

Offline

Fußzeile des Forums

up