Page 1 of 1

Bug in functions.php (CMSimple_XH 1.7.1)

Posted: Fri Nov 17, 2017 11:23 pm
by todde
Hallo!

Ich habe einen merkwürdigen Bug entdeckt, der mit der aktuellen Version 1.7.1 unter PHP 5.3 und 5.4 nicht auftritt, dafür aber unter PHP 5.6 (und mögolicherweise höher):

Ruft man hier seine CMS-Website (mit eingeschaltetem PHP-Error-Reporting) auf, erscheint dort folgende Meldung:

Parse error: syntax error, unexpected '[' in /home/cmsimple_xh/cmsimple/functions.php on line 1299

Ursache sind hier die eckigen Klammern bei:

Code: Select all

if (in_array($errno, [E_USER_ERROR, E_RECOVERABLE_ERROR])) {
Das gefällt PHP offenbar nicht. Eine Änderung in:

Code: Select all

if (in_array($errno, array(E_USER_ERROR, E_RECOVERABLE_ERROR))) {
behebt das Problem. Oder sollte man das möglicherfweise anders korrigieren?

Re: Bug in functions.php (CMSimple_XH 1.7.1)

Posted: Sat Nov 18, 2017 10:40 am
by cmb
todde wrote:Parse error: syntax error, unexpected '[' in /home/cmsimple_xh/cmsimple/functions.php on line 1299
Danke für den Report. Das Problem ist bekannt, und wurde im Repo bereits behoben (wird also mit CMSimple_XH 1.7.2) veröffentlicht werden.
todde wrote:Ich habe einen merkwürdigen Bug entdeckt, der mit der aktuellen Version 1.7.1 unter PHP 5.3 und 5.4 nicht auftritt, dafür aber unter PHP 5.6 (und mögolicherweise höher):
Nun bin ich aber verwirrt. [] statt array() ist erst seit PHP 5.4.0 erlaubt, müsste also nur unter PHP 5.3 (und älter, was ja sowieso nicht mehr unterstützt wird) einen Parse-Error auslösen, siehe https://3v4l.org/Bj3sU.

Re: Bug in functions.php (CMSimple_XH 1.7.1)

Posted: Tue Jan 02, 2018 9:27 pm
by todde
Hallo!

Prima, das Problem ist ja inzwischen mit Vesion 1.7.2 gefixt.
cmb wrote: Nun bin ich aber verwirrt. [] statt array() ist erst seit PHP 5.4.0 erlaubt, müsste also nur unter PHP 5.3 (und älter, was ja sowieso nicht mehr unterstützt wird) einen Parse-Error auslösen, siehe https://3v4l.org/Bj3sU.
Hm, merkwürdig. Ich hatte bis vor einigen Monaten noch mit Vertigo Server 2.30 gearbeitet (sowas wie XAMPP, aktuell ist 2.47) und das hat mir noch PHP 5.3.x angezeigt, da hat dieser Trick mit "array(<KONSTANTE>)" geholfen. Möglicherweise ist nur "array()" (also ganz ohne Konstante) erst ab PHP 5.4 erlaubt. Egal, jetzt funktioniert's jedenfalls :).

Viele Grüße
Todde