2017-08-29 3 views
0

Ich erfahre Problem mit PHP-Anfrage auf Selbst. Im Beispiel verwende ich file_get_contents() aber gleiches passiert für exec('wkhtmltopdf [*SELF*]') oder curl()PHP-Anfrage auf Selbst

  • Namen example.com meines Servers
  • apache2 installiert
  • FastCGI (mehrere PHP-Versionen 5.3, 5.4, 5.5, 5.6, 7.0) kann
  • jetzt ich habe 2 Dummy-Skripte


1. Skript

//get-html.php 
file_get_contents('http://example.org/index.html') 

2. Skript

//get-php.php 
file_get_contents('http://example.org/index.php') 


Testing
1) Befehlszeile: php get-html.php // Success
2) Browser: example.org/get-html.php // Success

1) Befehlszeile: php get-php.php // Erfolg
2) Browser: example.org/get-php.php // Timeout


Was ich versucht nächsten

  • Sub-Domain erstellen wie subdomain.example.org/index.php für get-php.php differet PHP-Version zu haben und für index.php
  • ändern/etc/hosts
  • Anfrage auf anderen Websites (wie google.com) // Erfolg
  • session_write_close() vor file_get_contents() und session_start() richtig funktioniert nach nicht auch

Also mein Verdächtiger mod_fastcgi ist. Es sieht so aus, als ob der Apache nicht in der Lage ist, 2 Instanzen davon auszuführen, um PHP-Anfragen zu behandeln, die von ihm selbst kommen. Wie laufendes Skript von der Befehlszeile funktioniert wie erwartet.

Hat jemand einen Rat?

+0

Sind die Dummy-Skripts vollständig? Sie verwenden keine Sitzungen (sie könnten auch blockieren) – Mark

+0

Guter Punkt Mark. Vergaß zu erwähnen. Ich habe auch versucht session_write_close(); file_get_contents ('http://example.org/index.php'); session_start(); Aber das war auch nicht erfolgreich. Aktualisierung des Abschnitts "Was ich als nächstes versucht habe". – Nedvajz

+0

Bitte starten Sie die Sitzung nicht (oder verwenden Sie sie überhaupt erst einmal) und versuchen Sie es erneut, damit unsere Frage beantwortet wird, wenn das Problem durch eine Blockierungssitzung oder etwas anderes verursacht wird. – Mark

Antwort

0

Ich habe nicht gesetzt PHP_FCGI_CHILDREN was in Verzug 1.
Wenn ich in PHP-Skript über Apache eine andere PHP-Skript von meinem Server nannte es fehlgeschlagen, da es nicht in der Lage war, eine andere PHP FCGI Instanz zu erstellen.

Proper settings of PHP_FCGI_CHILDREN