fopen - Problem

Sasser

Erfahrenes Mitglied
Hallo!

Ich gebe in einer Schleife ein paar Links aus und prüfe diese auf Erreichbarkeit. Allerdings wird mir überall Offline ausgegeben, bis auf die letzte Ausgabe. Bei der letzten Ausgabe wird immer Online ausgegeben. Versteht das jemand?

PHP:
foreach ( file ( 'settings/projects.txt' ) as $project ) {
$project  = explode ( '|', $project );
if ((@fopen ( $project [1], "r" ) == true)) {
echo "<img src='images/online.gif'>";
} else {
echo "<img src='images/offline.gif'>";
}
}
 
Gib einmal aus, welche Datei immer versucht wird zu öffnen. Dann siehst du zumindest mal was probiert wird.

Laut dem PHP Manual gibt fopen FALSE zurück, wenn das Öffnen fehlgeschlagen ist.
Prüfe einmal auf != FALSE anstatt auf == TRUE
 
Beides auf ON! Habe grad extra in der phpinfo() nachgeschaut.

Mich irritiert einfach, warum immer der letzte Link (obwohl dieser immer wieder ein anderer ist) als Online angezeigt wird und alle anderen als Offline!? Liegt das an der Schleife? :confused:
 
Dann bauen wir das doch mal ein wenig um...

PHP:
$projects = file ( 'settings/projects.txt' );
foreach ( $projects as $project ) 
{
	$prj  = explode ( '|', $project );
	if ((@fopen ( $prj[1], "r" ) == true)) 
	{
		echo "<img src='images/online.gif'>";
	} 
	else 
	{
		echo "<img src='images/offline.gif'>";
	}
}

Was sagt denn die Ausgabe?
 
Es ist immer noch der gleiche Fehler...

Das hatte ich bereits vorher schonmal probiert, weil ich dachte dass ein Array oder String überschrieben wird. Ist aber leider nicht der Fehler...

Funktioniert es denn bei dir?
 
Was passiert denn wenn du den Handler von fopen nimmst und einmal komplett ausliest? Eine Seite die einen HTTP-Statuscode liefert wird hier auf jeden Fall als Online angezeigt.
Zum Prüfen ob eine Seite läuft, gab es schon einmal einen ausführlichen Thread.
 
Zurück