Unbekannter Fehler bei Schleife

Sasser

Erfahrenes Mitglied
Guten Abend!

Ich erhalte bei einem Webspace bei dem folgenden PHP-Code den Fehler:

Warning: Invalid argument supplied for foreach()

Bei den anderen Webspaces funktioniert der folgende Code ohne Fehler:

PHP:
$design ["links"] = array ();
$design ["links"] = unserialize ( $_COOKIE ["links"] );
foreach ($design ["links"] as $i => $link) {
          $design ["links"] [$i] ["name"] = substr ( $link ["name"], "0", "25" );
          $design ["links"] [$i] ["url"] = substr ( "http://" . str_replace ( array ( "http://", " " ), "", strtolower ( $link ["url"] ) ), "0", "250" );
}

Ich finde den Fehler aber einfach nicht.
 
prüfe mal mit var_dump() dein $design ["links"] direkt vor der foreach-Schleife. ich geh mal davon aus, dass der unserialize() kein Array zurückgibt.
 
Ja es wird bool(0) zurückgegeben, also wie du bereits vermutet hast. Es wird zuvor per serialize ein Array abgespeichert und beim nächsten Seitenabruf wird dieses Array wiederhergestellt.

Warum funktioniert es auf 1 von 5 Servern nicht? Kann eine fehlerhafte PHP-Version daran schuld sein oder eine andere Einstellung? Wie gesagt, das Script funktioniert auf 4 Servern einwandfrei...
 
Da du das serialisierte Array in ein Cookie (wahrscheinlich) mittels setcookie()-Funktion reinspeicherst, der Code auf den 5 Servern soweit identisch sein dürfte, könnte ich mir nur noch vorstellen, das

- eine unterschiedliche PHP-Version vorliegt, bei der Features genutzt werden sollen, die es nicht gibt, bzw. die anders ablaufen
- unterschiedliche Konfigurationen vorliegen

Was sagt denn das Server-Logfile in error.log des Apachen?
 
Die Sessionvariable "links" ist aber noch gefüllt? (mal ausgeben lassen..?)

mfg chmee
 
Das Cookie ist gefüllt, aber unserialize ( $_COOKIE ["links"] ); gibt nichts zurück, obwohl es die gleiche Prozedur wie auf den anderen Servern ist!?
 
Zurück