Parce que le caractère '\' est un caractère spécial. Son utilisation permet entre autre de gérer les saut de ligne '\n', et autres ('\r', '\t', etc.)
Lorsque tu écris \ dans ton chemin et tente ensuite de l'afficher, PHP tente d'abord d'interpréter le caractère qui suit ton '\'. Si \ plus le caractère qui suit correspond à un code connu (comme \n par exemple), alors la séquence est interprétée en saut de ligne, sinon la séquence est affichée telle quelle à l'écran.
Ce qui se passe donc dans ton cas, c'est que la séqence '\2' doit certainement être interprétée en signe de monnaie euro.
Comment faire pour palier à ce problème là ?
Il faut que tu passe ta chaine de caractère dans la fonction suivante :
addslashes
qui a pour but de neutraliser l'interprétation du '\' en ajoutant devant chaque '\' un autre '\'. En effet, la séquence '\\' permet d'afficher à l'écran un '\' (sans l'interpréter donc).
Ton code sera donc :
$photo[1]="Q:\CARTE T\out\image\L20071212_094451\20071212324.tif";
$photo[1] = addslashes($photo[1]);
echo $photo[1];
EDIT : Ce n'est pas la bonne fonction que j'ai donné en fait, ma mémoire me joue des tours. Une petite recherche dans l'aide PHP et tu devrait trouvé ce qui te conviendra :
http://fr2.php.net/manual/fr/function.htmlspecialchars.php