Jump to content
Froxlor Forum

Archived

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

  • 0
matsy

[solved] Internal Server Error bei Curl_exec

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.

Share this post


Link to post
Share on other sites

Recommended Posts

Was ist eine "interne" Domain f?r dich? Bzw. was genau willst du nun erreichen?

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
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.

Share this post


Link to post
Share on other sites

Nopaste doch das script mal, dann teste ich das auf meinem fpm Server

Share this post


Link to post
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.

Share this post


Link to post
Share on other sites

Funktioniert problemlos, hast du vllt bei "localdomain.de/index.php" einen redirect drin ode reine .htaccess die irgendwas macht etc.?!

Share this post


Link to post
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.

Share this post


Link to post
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.

Share this post


Link to post
Share on other sites

Wenn das Angebot noch gilt, dann nehme ich es gerne an. Ich bin am Ende meines Lateins bei diesem Problem.

Wahrscheinlich ist es was furchtbar Einfaches oder Offensichtliches........

Share this post


Link to post
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.

Share this post


Link to post
Share on other sites

Nopaste doch bitte mal EXAKT die scripts die da verwendet werden, am besten auch ein "ls -la" des docroots. Ich bin immernoch der Meinung das da irgendwas redirected oder sowas in der Art

Share this post


Link to post
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?

Share this post


Link to post
Share on other sites

mod_php aktivieren -> froxlor einloggen -> fpm wieder aktivieren -> mod_php deaktivieren -> cron anstupsen -> BAM

Share this post


Link to post
Share on other sites

Leere Seite heisst nicht 404 sondern in den meisten F?llen ein nicht angezeigter PHP-Fehler, schau bitte in die error_logs 

Share this post


Link to post
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"

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
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:

Share this post


Link to post
Share on other sites

W?rde es nicht ausreichen PHP-FPM in der Datenbank zu aktivieren und dann die Configs neu schreiben zu lassen?

Share this post


Link to post
Share on other sites

So nun habe ich den Eintrag fpm enabled in der Datenbank auf 1 gesetzt. Nun kommt bei 500er Fehler egal was ich aufrufe.

Share this post


Link to post
Share on other sites

×
×
  • Create New...