2010-06-09 4 views
0

Je travaille sur la migration d'un site Web à partir d'un serveur externe (exécutant Apache) vers un serveur local (exécutant IIS) et j'ai rencontré un problème que je n'arrive pas à résoudre .IIS, Apache et header()

Le site utilise un plug-in Joomla personnalisé qui récupère certains graphiques stockés dans une base de données mysql (par exemple http://www.norfolktourism.ca/index.php?option=com_bdirectory&task=image&cid=191). Cependant, lorsque je migre le site vers le serveur local, les images sont rompues. Après une exploration plus poussée, j'ai découvert que d'une manière ou d'une autre, sur le serveur local, il semble que ce soit un espace (comme dans une nouvelle ligne) qui est traité avant que la fonction header() soit traitée, cassant l'image (Cependant, je ne reçois pas d'erreur - juste une image cassée).

Je suis absolument déconcerté quant à ce que le problème peut être, car le code fonctionne bien sur le serveur Apache externe.

Quelqu'un aurait-il des suggestions sur les solutions possibles? Difficile à dire, et le scénario n'est pas clair.

+0

« leur semble les espaces (comme dans une nouvelle ligne) est traitée "- un peu de vérification de la grammaire? – leonbloy

+0

"récupère des graphiques stockés dans une base de données mysql" que vous voulez dire d'un serveur local mysql, ou d'un site externe via http? – leonbloy

+0

La base de données Mysql est une base de données locale. – MetalAdam

Répondre

0

Le serveur Apache externe fonctionne sous Linux ou Windows? Peut-être un bug lié à newlines?

Mise à jour: Par exemple, pour le débogage, vous pouvez exécuter cela et comparer avec la sortie (pour la même image) dans votre serveur IIS:

[[email protected] tmp]# wget -S -O imgunix.jpg 'http://www.norfolktourism.ca/index.php?option=com_bdirectory&task=image&cid=191' 
HTTP request sent, awaiting response... 
    HTTP/1.1 200 OK 
    Date: Wed, 09 Jun 2010 15:18:21 GMT 
    Server: Apache 
    Content-Length: 4406 
    Content-Disposition: filename="health.jpg" 
    Content-Type: image/jpeg 
Length: 4406 (4.3K) [image/jpeg] 

[[email protected] tmp]# od -c imgunix.jpg | head             0000000 377 330 377 340 \0 020 J F I F \0 001 002 \0 \0 d 
0000020 \0 d \0 \0 377 354 \0 021 D u c k y \0 001 \0 
0000040 004 \0 \0 \0 < \0 \0 377 356 \0 016 A d o b e 
0000060 \0 d 300 \0 \0 \0 001 377 333 \0 204 \0 006 004 004 004 
+0

Le serveur Apache fonctionne sur Linux ... – MetalAdam

+0

Eh bien, il pourrait y avoir un problème de relation. D'abord, vous devriez vérifier que les images stockées dans le DB ne sont pas corrompues. Ensuite, que le code qui le montre ne fait pas une supposition incorrecte avec des retours à la ligne. – leonbloy

+0

Les images sont correctes - nous avons pris une copie de la base de données du serveur de travail, donc il ne devrait pas y avoir de problèmes. Je ne peux pas comprendre comment le serveur externe a une nouvelle ligne, et le local ne le fait pas. J'ai exploré les options d'utilisation de ob_clean() et des fonctions similaires, mais en vain ... – MetalAdam