2017-02-23 3 views
0

Kleiner Kontext: Ich entwickle eine Evaluierungsfunktion, die Parsing-Probleme erkennen kann. Es benötigt file_get_contents für eine erstellte PHP-Datei mit seiner URL. Bitte sagen Sie nicht EVAL ist BÖSE. Ich poste meine neue Eval-Funktion nach der Behebung dieses ProblemsPHP + IIS: file_get_contents "hängt" mit einer localhost-URL

OK. Einfacher Test:

$fc = "Not executed"; 
$tmpDir = "var/temp-eval/"; 
$tmpfname = "t.php"; 
$ctx = stream_context_create(array( 
    'http' => array( 
     'timeout' => 1 
     ) 
    ) 
); 

echo "BEGIN<br>"; 

//// Both below makes the page hangs 
// TRY #1 
//$fc = @file_get_contents(Common::getRootUrl() . $tmpDir . $tmpfname, false, $ctx); 
// TRY #2 
//$fc = @file_get_contents(Common::getRootUrl() . $tmpDir . $tmpfname); 

//// Below, doesn't hang 
// TRY #3 
//$fc = file_get_contents("http://www.SOMEWEBSITE.COM"); 
echo $fc; 

echo "<br>END"; 

Behalten, wie es ist, alles kommentierte, es funktioniert. Die Seite wird geladen und zeigt den HTML-Code an.

uncommenting entweder VERSUCH # 1 oder VERSUCH # 2 (interne URL), die Seite nie laden beendet. Aber ... mit xdebug und dem Code folgend, kann ich den Inhalt in $fc bekommen und der Code scheint gut zu funktionieren - außer dem Hang -. Aber ... mit diesem Code auf einem Linux-Server mit Apache funktioniert es perfekt. :) :(

uncommenting VERSUCH # 3 (externe URL), es funktioniert sowohl auf Umwelt gut.

ich eine Konfiguration in IIS vermutet, dass einige Schwierigkeiten hat zwei Seiten zur Zeit laufen, aber nicht finden . etwas suchen im Internet

SETUP: IIS 10 + Microsoft Windows 10 Start + PHP 5.6

Antwort

0

schließlich vor meiner Antwort veröffentlichen, ich die Suche fortgesetzt und fand Menschen reden FastCGI läuft statt CGI So funktioniert es.. Ich poste es hier für den Fall, dass andere Leute auf dasselbe Problem stoßen wissend, was zu suchen ist, um das Problem zu beheben.

FastCGI ist systemeigen mit IIS 10, ich kenne die anderen Versionen nicht, aber es ist installierbar (obwohl wahrscheinlich alle verwendeten Versionen es nativ haben).

Also habe ich ein Modul Mapping von "Application Extension Mapping" (ich habe es Französisch, so nahm ich den Namen von der alten Version Seite, die ich hatte) hinzugefügt: Module = FastCGI, Ausführbare = PATH-OF-PHP/php-cgi.exe.

Seite von Microsoft hervorgeht, wie es installieren auf IIS 6.0: https://www.iis.net/learn/application-frameworks/install-and-configure-php-applications-on-iis/using-fastcgi-to-host-php-applications-on-iis-60

Verwandte Themen