Prova a fare tasto destro e vedere l'url dell'immagine, può essere che tu stia cercando di raggiungere l'immagine attraverso un path assoluto anziché relativo, in quel caso potresti eliminare la parte che non serve con un substr($url, $root); dove $url sta per il path assoluto dell'immagine e $root il path assoluto in cui si trova lo script (a condizione che l'immagine sia nella cartella dello script o in una sottocartella, ma non in una cartella diversa)
Anche se però aggiungerei che non mi convince l'ultimo script che hai postato, in cui fai un while aggiungendo dei link <a> e poi mandi l'header... L'header deve essere mandato prima di qualsiasi contenuto!