Seite 1 von 1

PHP Strict-Warning in class.filehandler.php

Verfasst: Do 19. Nov 2015, 11:27
von dermicha
Hallo zusammen,

bei (wahrscheinlich ab) PHP 5.4 gibt es teilweise folgende Warnings (durch die auch große Log-Dateien enstehen können):

PHP Strict Standards: Only variables should be passed by reference in /......./contenido/classes/class.filehandler.php on line 481
PHP Strict Standards: Only variables should be passed by reference in /......./contenido/classes/class.filehandler.php on line 495

Wenn man Zeile 481 durch

Code: Alles auswählen

      $fileName = explode('/', $fileName);
		$name = end($fileName);
ersetzt und Zeile 495 durch

Code: Alles auswählen

      $fileName = explode('/', $fileName);
		return (strpos(end($fileName), ".") === 0);
gibt es die Meldung nicht mehr. Der Fehler entsteht, weil end den Parameter als Referenz übernimmt und daher nur echte Variablen erlaubt sind, nicht aber Rückgabewerte von Funktionen. Wäre schön, wenn es im Core korrigiert wird.

Grüße
Michael

Re: PHP Strict-Warning in class.filehandler.php

Verfasst: Mo 25. Jan 2016, 10:45
von dermicha
Kann sonst noch jemand diesen Bug bestätigen? Bei einer Installation mit PHP 5.6 tritt das gleiche Problem auf. Im Issue-Tracker scheint es noch nicht aufgenommen zu sein...

Re: PHP Strict-Warning in class.filehandler.php

Verfasst: Mo 25. Jan 2016, 17:30
von rethus
Versuch es mal damit, die Ausgabe von "end()" erstmal an eine Variable zu geben:

Code: Alles auswählen

$fileName = explode('/', $fileName);
$fileName = (strpos(end($fileName), ".") === 0);
return $fileName;

Re: PHP Strict-Warning in class.filehandler.php

Verfasst: Mo 25. Jan 2016, 18:15
von dermicha
Hallo rethus,

vielen Dank für Deine Antwort. Die Lösung hatte ich ja bereits dazugeschrieben. Ich würde mich nur freuen (wenn es ein auch von anderen nachvollziehbarer Fehler ist), wenn es im Core geändert würde... :D

Viele Grüße
Michael

Re: PHP Strict-Warning in class.filehandler.php

Verfasst: Do 28. Jan 2016, 09:04
von frederic.schneider_4fb
Mit welcher Version von CONTENIDO arbeitet Ihr? Wir haben die entsprechenden Code-Stellen bereits am 16. Dezember 2014 im Zuge des Tickets https://issues.contenido.org/browse/CON-1975 umgestellt, z. T. Euren Vorschlägen sogar nahezu entsprechend.

P. S.: Bei einem Test eben habe ich mit PHP 5.5 auch (folgerichtig) keine PHP-Strict-Meldungen provozieren können.

Re: PHP Strict-Warning in class.filehandler.php

Verfasst: Do 28. Jan 2016, 14:11
von dermicha
Sorry, zu wenig Info meinerseits. Ich nutze ein eigenes Modul, dass unter anderem

cFileHandler::fileNameIsDot
cFileHandler::fileNameBeginsWithDot

verwendet (meines Wissens nicht deprecated?). Dort müssen aus meiner Sicht die Änderungen durchgeführt werden. Eingesetzte Version ist 4.9.8:

http://api.contenido.org/latest/source- ... ml#477-501

Mit dem Demo-Mandanten gibt es keine Warnings.