PHP kann keine Internetverbindungen herstellen

Pendergast

Erfahrenes Mitglied
Sers,

in den PHP-Skripten die auf meinem lokalen Server laufen ist es nicht möglich, Verbindungen ins Internet herzustellen (z.B. öffnen entfernter Dateien mittels fopen(), simplexml_load_file(), etc.). Mit welcher Funktion auch immer, ich erhalte stets die Meldung "failed to open stream: No route to host".


Hier ein kleiner Überblick:

* Apache2, php5 (jeweils Source-Distributionen)
* Ubuntu 5.04
* allow_url_open in der php.ini ist "on", wird bei "off" auch in der Fehlermeldung bemängelt
* die zu öffnenden Dateien sind vorhanden und können z.B. im Browser geöffnet werden
* ping zum aufzurufenden Server funktioniert


Woran kanns liegen?
 
Ich weiss, das wirst du geprüft haben, aber darf den dein Apache/PHP durch deine Firewall raus?

Mehr fällt mir gerade nicht
Gruss
 
Das ist eine verdammt gute Frage. Ich glaub aber eigentlich nicht, dass ich eine Firewall in diesem Sinne installiert habe. So gut kenn ich mich da nun noch nicht aus mit Linux. Aber da alle anderen Programme, die ich hier und da mal installiere ebenfalls ohne Probleme Netzzugang haben sag ich einfach mal daran wirds nicht liegen.
 
Ob unter Linux eine Firewall, also Netfilter, aktiv ist kannst Du mittels iptables -L herausfinden.
Wenn Du lediglich 3 leere Ketten siehst ist keinerlei Filter aktiv.
Ansonsten wirst Du entweder versuchen muessen die Ausgabe selbst zu deuten oder mal hier posten.

Geht es bei Deinem Problem darum, dass die Verbindung zum Internet hergestellt werden muss oder dass sie bereits besteht aber Du mit PHP auf keine externen Rechner zugreifen kannst?
 
Der Fehler besteht darin, das mit PHP Funktion wie "FOPEN();" keine Zugriffe ins Web ermöglicht werden.

Mit der Meldung -> No Route To Host
 
Was ist mit fsockopen(), geht das?

Einfach mal hiermit testen:
PHP:
$host="www.t-online.de";
$port=80;
$starttime=microtime();
$socket=@fsockopen($host,$port);
$endtime=microtime();
if ($socket!=false)
	{
		fclose($socket);
		list($msec,$sec)=explode(" ",$starttime);
		$starttime=(float)$msec+(float)$sec;
		list($msec,$sec)=explode(" ",$endtime);
		$endtime=(float)$msec+(float)$sec;
		$pingtime=($endtime-$starttime)*1000;
		echo $host.' ('.$port.'): '.round($pingtime).' ms<br>';
	}
else
	{
		echo 'Port '.$port.' could not be reached on '.$host.'<br>';
	}
?>
 
Also, die iptables sind wie erwartet leer. Und der fsockopen-Code liefert bei mir "Port 80 could not be reached on http://www.t-online.de".

Wenn ich aus dem Code das @ entferne, dann gibts mal wieder Warning: fsockopen() [function.fsockopen]: unable to connect to http://www.t-online.de:80 (No route to host) in /srv/websites/playground/www/index.php on line 6. ;)
 
Besteht die Internetverbindung denn bereits oder soll die automatisch aufgebaut werden wenn das Script auf einen externen Host zugreifen will?
 
Ich hab hier eine ständige Internetverbindung. Mir kam mal die Idee, dass ich für PHP nochmal irgendwo vielleicht irgendwelche HTTP- oder Socks-Proxy-Einstellungen vornehmen muss, hab in der Richtung aber nichts gefunden und den Gedanken daher wieder verworfen.
 
Zurück