Last modified: 2011-03-13 18:05:16 UTC
I wanted to create a small image gallery aka 'favicons'.
I found two problems, the first one while uploading
WebRequest::getFileName() 'myfavicon.ico' normalized to 'myfavicon.ico'
Block::load: '184.108.40.206', '1', 1
MimeMagic::MimeMagic: loading mime types from includes/mime.types
MimeMagic::MimeMagic: loading mime info from includes/mime.info
MimeMagic::detectMimeType: no magic mime detector found!
MimeMagic::detectMimeType: image mime type of /tmp/php7eycaa: image/vnd.wap.wbmp
MimeMagic::guessMimeType: final mime type of /tmp/php7eycaa: image/vnd.wap.wbmp
SpecialUpload::verifyExtension: mime type image/vnd.wap.wbmp mismatches file
extension ico, rejecting file
Solution: add in the file /includes/mime.types the line
Remark: this type was shown in the debug log for several files of different
origin when uploading with Netscape 7.1
and add in /includes/DefaultSettings.php the file extension to the existing array
$wgFileExtensions = array(......, 'ico' )
This allows to upload an *.ico file.
However, the image page is not showing the thumbnail, perhaps because the
thumbnail routines cannot render this. But also [[image:myfavicon.ico]] does not
work, i.e. does not render the image (needs to be fixed).
Both problems need review of experts of the /include/Image.php module.
Most browsers don't support Windows icon files.
First of all, with "image/vnd.wap.wbmp ico" you told mediawiki that windows bmp
files are icon files - that's simply wrong. Get your mime detection to work -
under linux, you can set $wgMimeDetectorCommand= "file -bi", that should do it.
Alternatively, get a version of PHP that has either the fileinfo or the
mime_magic extension compiled in. ico files should be tectected as image/x-icon.
Second, ico-files will not be handeled as images by mediawiki, because many
browsers do not support it, and it can't really be scaled. It could be rendered
server-side using imagemagick in theory, but this is suppressed, because ico
files may contain multiple images (for animations, or different ones for
enabled/disabled, etc), and the software can't know which one to use. You can
hack that locally, if you want, by uncommenting the following line in the
canRender function in Image.php:
#|| $mime === 'image/x-icon' #file may be split into multiple parts
Note that wbmp isn't Windows Bitmap, it's some other format for use with WAP.
The tip with $wgMimeDetectorCommand= "file -bi" was perfect (I overlooked that
for weeks) !
But now a request for small code cosmetics in CVS HEAD:
Add in DefaultSettings.php in that line 266 a semicolon after -bi"
265 $wgMimeDetectorCommand= NULL; # use internal mime_content_type function,
available since php 4.3.0
266 #$wgMimeDetectorCommand= "file -bi" #use external mime detector (linux)
266 #$wgMimeDetectorCommand= "file -bi"; #use external mime detector (linux)
(In reply to comment #4)
> Add in DefaultSettings.php in that line 266 a semicolon after -bi"
Hope, that it's okay when I now wontfix this bugzilla.