Nimm var_dump() statt echo, dann siehst du vermutlich ein false. Ergibt var_dump($fp) nach dem fsockopen() auch false? error_reporting steht auf E_ALL?
Lo!
OK hab var_dump() genommen.
Hab nun folgenden Effekt.
Ich starte das Script, der Browser meldet in der Statuszeile: Übertragen der Daten von...
nach ner ganzen Weile meldet die Seite bool(false) Connection timed out
bool(false) der var_dump($fp)
Connection timed out der $errstr.
Daraufhin habe ich einen anderen Host genommen, einfach um zu sehen was $fp macht. Immer ist $fp false.