Authentification d’image Mediawiki: L’image “URL. *” Ne peut pas être affichée car elle contient des erreurs

Je cherche de l’aide concernant le problème suivant qui m’a beaucoup dérangé aujourd’hui. Je construis actuellement un wiki, qui utilise actuellement les spécifications suivantes:

OS: Windows XP x86 MediaWiki 1.19.1 Apache 2.4.2 PHP 5.4.4 MySQL 5.5.25a phpMyAdmin 3.5.2 PHP Cache 3.1.14.TS.VS9.X86.XP

Il y a quelque temps, j’avais configuré l’authentification de l’image pour le wiki, ce qui fonctionnait bien.

Cela a été fait selon la procédure habituelle:

  • J’ai modifié $ wgUploadPath avec la valeur “=” /wiki/img_auth.php “;”
  • J’ai ajouté un “Refuser tout” dans le fichier .htaccess du dossier “/ wiki / images”.

Cela a eu pour effet de modifier l’URL des images et de refuser l’access au dossier / images lui-même. L’URL est maintenant "http://img.zgserver.com/php/2012-12-07_071358.png" au lieu de "http://img.zgserver.com/php/2012-12-07_071358.png" .

Cependant, les situations ont changé plus tôt cette semaine et je ne sais pas pourquoi ou comment. Les images ont disparu du wiki. Naviguer vers la page http://xxxx/wiki/index.php/File:2012-12-07_071358.png et ensuite à l’image elle-même soulève deux problèmes:

  • Dans Firefox, bien que l’URL apparaisse correctement sous la forme "http://xxxx/wiki/index.php/File:2012-12-07_071358.png" , le message suivant s’affiche: L’image "http://img.zgserver.com/php/2012-12-07_071358.png" ne peut pas être affiché car il contient des erreurs
  • Dans IE, l’image est simplement affichée sous la forme du “X rouge”.

Cela se produit avec:

  • Fichiers .jpg, fichiers .png, fichiers .tif / tiff, fichiers .bmp (au moins).

D’autres types de fichiers tels que .PDF, .AVI, .7Z, etc. sont tous correctement utilisés par le wiki.

Toutes les images sont toujours correctement disponibles sur le serveur. Je suis capable d’en ouvrir directement sur le serveur (je sais donc qu’elles ne contiennent pas d’erreurs). Je suis également capable de voir toutes les images sur le wiki qui n’utilisent pas l’authentification de l’image (par exemple, le logo).

J’ai installé Firebug et j’ai regardé les résultats lors du chargement de l’image elle-même:

Les en-têtes de requête sont:

 Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding gzip, deflate Accept-Language en-US,en;q=0.5 Cache-Control max-age=0 Connection keep-alive Cookie wikiUserName=username; wikiUserID=1; wiki_session=f67501dd979ec4f4939251b1bf9a9a5c Host xxxx If-Modified-Since Fri, 02 Nov 2012 16:54:29 GMT Referer http://xxxx/wiki/index.php/File:2012-12-07_071358.png User-Agent Mozilla/5.0 (Windows NT 5.1; rv:26.0) Gecko/20100101 Firefox/26.0 

En-têtes de réponse:

 Cache-Control private Connection close Date Tue, 14 Jan 2014 20:00:18 GMT Server Apache/2.4.2 (Win32) OpenSSL/1.0.1c PHP/5.4.4 Vary Cookie 

Le statut final de la demande d’image est “304 Not modified”, et le fait de passer le curseur sur un champ indique: “Impossible de charger l’URL indiquée”.

Si je supprime l’authentification de l’image en commentant $ wgUploadPath et “Deny from all” de .htaccess, je peux à nouveau visualiser les images correctement. Cependant, cette configuration n’est pas acceptable pour moi.

J’ai essayé de rechercher les occurrences précédentes d’un tel problème, mais je n’ai rien trouvé de spécifique. Quelqu’un pourrait-il proposer une solution? Si vous souhaitez que d’autres détails me soient fournis, je ferai de mon mieux pour répondre aux questions.

Manual of Image Auth: http://www.mediawiki.org/wiki/Manual:Image_Authorization Script img_auth.php: http://pastebin.com/TDaZex9Y

Vérifiez votre journal PHP. Il semble que les images soient livrées, mais dans un état brouillé. Je ne peux pas dire si elle est réellement sans regarder les fichiers, mais si un avertissement PHP a commencé à apparaître et que display_errors est display_errors , le message d’erreur peut s’append au script .php.

Il semble que l’image binary soit précédée par une nouvelle ligne, résultant en un fichier image illisible. Un code php envoie cette nouvelle ligne erronée.