Jump to content
Froxlor Forum
  • 0

[solved] Internal Server Error bei Curl_exec


matsy

Question

Der Server ist mit PHP-FPM eingerichtet und funktioniert. Es sind alles Seiten erreichbar.

Auch Curl_exec funktioniert allerdings nur wenn ich eine externe Domain anspreche. F?r ein Skript ist es notwendig, dass eine interne Domain angesprochen wird, dabei erfolgt die obige Meldung.

 

Im Log finde ich nichts weiter als:

 

FastCGI: incomplete headers (0 bytes) received from server "/var/www/php-fpm/xxx/fpm.external"

FastCGI: comm with server "/var/www/php-fpm/xxx/fpm.external" aborted: idle timeout (60 sec)

 

Der Sinn der Fehlermeldung ist mir einigerma?en klar hier findet irgendeine Kommunikation nicht statt, mir ist aber nicht klar wo der Fehler liegen k?nnte. Wie gesgt, PHP-FPM funktioniert sonst und curl_exec ist in der Config enabled und funktioniert tadellos mit allen externen Domains. Nur intern nicht.

Link to comment
Share on other sites

Recommended Posts

Intern und Extern ist nicht ganz richtig stelle ich gerade fest. Es geht um die gleiche Domain.

Zum Beispiel: Wenn ich die aufzurufende URL in der URL selbst mitgebe:

www.domain.com/test.php?url=http://www.google.de -> funktioniert

www.domain.com/test.php?url=http://www.domain.com -> Internal Server Error

 

Test.php macht nichts anderes als url abzugreifen und an curl_exec zu ?bergeben.

Link to comment
Share on other sites

Ok. Kann das dann FPM-spezifisch sein? Mir kam der Aufruf zwar auch komisch vor aber es ist ein kommerzielles Skript was nach Herstellerangaben mit genau diesem Aufruf eigentlich funktionieren sollte. Kann es sein, dass es mit modphp oder FCGI l?uft und nur mit FPM nicht?

Das w?re nat?rlich doof.

Link to comment
Share on other sites

<?php
		if (isset($_GET['url'])){
			$url = $_GET['url'];
		}
		$ch = curl_init();
		curl_setopt( $ch, CURLOPT_URL, $url );
		curl_setopt( $ch, CURLOPT_HEADER, 0 );	
		curl_setopt($ch, CURLOPT_POST, 0);
		if( ini_get('safe_mode') || ini_get('open_basedir') ){ 		   
			curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);		   
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);		
		}else{ 		   
			curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);		   
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);		
		}

		ob_start();
		$output = curl_exec($ch);       
         curl_close($ch);
		 echo $output;
?>

Das ist das Testskript. Wenn man das zum Beispiel als test.php abspeichert, dann funktioniert der Aufruf: http://www.localdomain.de/test.php?url=www.youtube.com ohne Probleme.

Versucht man damit aber zum Beipsiel die index.php im eigenen Root zu laden: http://www.localdomain.de/test.php?url=www.localdomain.de/index.php

dann erzeugt dies die besagte Fehlermeldung obwohl das kommerzielle Skript um das es mir geht genau diese Art Aufruf braucht und es angeblich bei allen anderen Installationen funktioniert. Da FPM bei mir aber grunds?tzlich funktioniert ohne jegliches Problem habe ich keine Idee mehr woran es liegen k?nnte und ich habe eigentlich auch keine Lust mir den funktionierenden Server zu zerschie?en.

Link to comment
Share on other sites

Klappt bei mir immer noch nicht. Es ist zwar eine .htaccess im Verzeichnis aber auch wenn ich die rausnehme tut sich Nichts, d.h. ich kriege wieder den Fehler. Ein Redirect ist nicht drin, Au?er, dass die Domain um die es geht ein Alias hat. Ich versuche aber die Hauptdomain anzusprechen, d.h eigentlich sollte das Serveralias nicht st?ren.

Ich wei? nicht was ich noch probieren soll. Ip-Aufl?sung stimmt. Die Reverse-DNS Aufl?sung d?rfte es meiner Einsch?tzung nach auch nicht sein.

Irgendwo habe ich gelesen, dass ein Eintrag in der hosts vielleicht helfen k?nnte. Tuts aber auch nicht.

 

Ich wei? nicht mehr weiter was da kaputt ist.

Link to comment
Share on other sites

Kann ich dir leider auch nicht sagen, bei dem was ich bisher von dir f?r infos bekommen habe. Dein Testscript tut zumindest bei mir mit apache+php-fpm genau das was es soll. Ich kann dir gerne anbieten mir das mal direkt "vor Ort" anzuschauen bei dir auf der Kiste, wenn du m?chtest.

Link to comment
Share on other sites

Wer lesen kann....

 

Ich hab doch glatt hier den letzten Post ?bersehen., ich sa? wohl doch zu lang vor dem Bildschirm.... Das hochsetzen von max_child hats gebracht.

 

Ist ja auch logisch: Maximal 1 Request/time... Gut, dann kann das ja garnich funktionieren.

(Ist das gewollt so eng bemessen von euch? :)). Ich werde es aber nicht bei 2 statischen belassen, sondern mit mal dynamic und ondemand ansehen und anpassen.

 

TAUSEND Dank an christian_death. Hab schon ?berlegt zur?ck auf mpd_php5 zu wechseln :D.

Link to comment
Share on other sites

So habe nun weiter und weiter gesucht und festgestellt, dass das Problem "Internal Server Error" bei mir auch mit wget und lynx auftritt. Wenn ich in der Shell mein Testscript aufrufe mit wget www.domain.com/test.php?url=http://www.domain.com, dann bekomme ich den Internal Server Error ebenfalls. Wenn ich aber aufrufe www.domain.com/test.php?url=http://domain.com dann funktioniert es.

 

Ich habe nun aber noch keine Ahnung welchen Schalter ich in Froxlor/Apache/FPM umlegen muss, dass mir die Aufl?sung funktioninert, bzw. anscheinend hat er mit dem www. irgendwie ein Problem.

 

Edit: So heute noch einmal ?berpr?ft und leider war meine obige Aussage falsch. Das Problem tritt weiterhin auf unabh?ngig ob mit oder ohne www.

 

Nochmal edit: Ich habe nun testweise eine v?llig neue Domain angelegt, mit v?llig leerem Docroot. Wenn ich die test.php da rein lege und versuche eine andere php-Datei im gleichen Docroot mit wget zu ziehen funktioniert das nicht. Es kommt wieder Internal Server Error.

Eine nicht-php-Datei, z.B. robots.txt im Docroot kann ich allerdings ohne Probleme ziehen.

 

Das hat irgendwie mit dem PHP auf dem Server zu tun.

Link to comment
Share on other sites

Jetzt habe ich erst einmal ein anderes Problem: Ich habe PHP-FPM abgew?hlt und den Server neu gestartet ohne PHP neu zu konfigurieren bzw. auszw?hlen.

Jetzt bekomme ich nat?rlich nur noch leere Seiten. Wie kann ich denn PHP-FPM wieder aktivieren?

Link to comment
Share on other sites

Hmmm....

Doch, ich kriege im Browser ein 404 und auch im Log steht:

IP.IP.IP.IP - - [04/Apr/2014:14:06:29 +0200] "GET / HTTP/1.1" 404 512 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko"

Link to comment
Share on other sites

Wenn da aber die Seite komplett wei? bleibt stimmt ja bei deinem Webserver auch was nicht

Das mag sein. Ich fand ja die Sache mit dem Internal Server Error auch seltsam.

Das hilft mir nur im Moment nicht. :blink:

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...