2016-05-20 19 views
1

LÖSUNG ZU MEINEM PROBLEM: Im Vorfeld habe ich SecurityMod über die WebPI-Plattform installiert, aber ich habe keine Popup-Optionen im IIS-Manager gesehen. Ich konnte es danach nicht mehr deinstallieren, da WebPI so angezeigt wurde, als wäre es nie installiert worden. Also habe ich angenommen, dass es nicht erfolgreich installiert wurde und es einfach vergessen hat.

Dann überprüfte ich die Fehlerprotokolle von Windows und sah SecurityMod hatte eine Reihe von Einträgen. Nach dem manuellen Deinstallieren funktioniert alles wie vorgesehen!

ORIGINAL PROBLEM:

hatte ich eine Website auf IIS 8.5 und PHP 5.3.28. Jetzt habe ich auf PHP 7.0.5 aktualisiert.

Plötzlich sind meine $_POST Arrays auf Seiten mit einem POST-Formular leer! Der Code hat sich nicht geändert, ich habe gerade PHP aktualisiert und ein paar IIS-Einstellungen geändert.

Hat jemand dieses Problem schon einmal gehabt?

EDIT: Ich habe gerade versucht, zurück zu 5.3.28 und bemerkte, dass anstelle der oben genannten Effekt, die Seite nur Laden und Laden und Laden ... Und nie Laden.

Ich bin mir nicht sicher, wie ich diesen Bug verfolgen soll. Könnten irgendwelche IIS Sicherheitseinstellungen oder Plugins dies verursachen?

EDIT 2: register globals war in meiner PHP 5.3.28 ini config.

Server-Side-Code:

<?PHP 
ob_start(); 

require_once('conf.php'); 
require_once($path2root.'class/common.php'); // var defined in class/conf.php 

$p = lib_GetUser(); // defined in class/common.php 

print_r($_SESSION); // ok (outputs the generated id I've put in from the last request) 
print_r($_POST); // empty! 
print_r($_GET); // ok (outputs the id in the URL) 

if (!isset($_GET['id'])) { 
    exit(); 
} 

$checkOk = false; 
if(isset($_SESSION['FirstKey']) && isset($_POST['key'])) { 
    $checkOk = $_SESSION['FirstKey'] == $_POST['key']; 
    // this was true on the old version! 
} 

[...] 

Client-side:

<form name="form" method="post" action="Keytest.php?id=16336"> 
    <input type="hidden" name="key" value="174e2f46"> 
    <p>Hello</p> 
    <input type="submit" value="ok"> 
    <input type="button" value="Back" onclick="history.go(-1);"> 
</form> 

EDIT 3: 5.3.28 Seite schließlich zu einem Fehler 500 geladen.

69. view trace Error -FASTCGI_REQUEST_TIMEOUT 

70. view trace Warning -SET_RESPONSE_ERROR_DESCRIPTION 
ErrorDescription C:\Program Files (x86)\PHP\v5.3\php-cgi.exe - The FastCGI process exceeded configured request timeout 

71. view trace Warning -MODULE_SET_RESPONSE_ERROR_STATUS 
ModuleName FastCgiModule 
Notification EXECUTE_REQUEST_HANDLER 
HttpStatus 500 
HttpReason Internal Server Error 
HttpSubStatus 0 
ErrorCode The wait operation timed out. 
(0x80070102) 
ConfigExceptionInfo 
+0

Sie haben sich wahrscheinlich auf globale Register http://php.net/manual/en/security.globals.php verlassen. Also posten Sie den vollen Code, um sicher zu sein. –

+0

@ Fred-ii-gepostete Code – Howie

+0

alles, was ich sehen kann, ist die doppelte '==' in '$ checkOk = $ _SESSION ['FirstKey'] == $ _POST ['key'];', die eine einzige sein sollte. Sehen Sie, ob Fehlerberichte etwas zurückwerfen http://php.net/manual/en/function.error-reporting.php - auch, ist die Sitzung gestartet? –

Antwort

0

Ich fand es heraus. Es war die Standardkonfiguration von SecurityMod, die das Problem verursachte. Interessanterweise manifestierte es sich anders in PHP 5.3 vs. 7.0.

Deinstallieren hat es geschafft.

Verwandte Themen