Die Fehlermeldung „fatal error cannot re-assign auto-global variable _post in …“ beendet regelmäßig den Aufruf von Skripten nach Umstellung auf PHP 5.4.
Grund dafür ist das Handling von superglobalen Variablen in PHP 5.4 und $_POST für die Übergabe von Formulardaten gehört natürlich dazu.
Die Variable $_POST darf seit PHP 5.4 nicht mehr als Parameter in Funktion stehen. Das gleiche gilt auch für andere superglobale Variablen, wie $_SESSION, usw… Das muß auch nicht sein, als superglobale Variablen stehen sie sowieso überall zur Verfügung.
Falls Skripte davon betroffen sind empfiehlt sich folgendes:
1. Als schnelle Maßnahme auf PHP 5.2 wechseln
2. Alle Parameter mit Namen von superglobalen Variablen aus Funktionen entfernen
Folgendes wird mit obiger Fehlermeldung von PHP 5.4 quittiert
if($_POST) myvar = func_var($_POST);
function func_var($_POST){
myvar = $_POST[‚var‘];
return(myvar);
}
So wäre alles kompatibel zu PHP 5.4
if($_POST) myvar = func_var();
function func_var(){
myvar = $_POST[‚var‘];
return(myvar);
}