[pmwiki-devel] $EnableUploadMimematch and "Call to undefined function mime_content_type()"

Petko Yotov 5ko at 5ko.fr
Sat Jan 13 21:03:10 PST 2024


On 14/01/2024 02:14, Simon wrote:
> Just further on this,
> it seems there may be potential issues with other file types with this
> check,
> e.g. today I got the message
> "_map.png_: extension 'png' doesn't match file type 'image/jpeg'"
> In upload.php we see "'png' => 'image/png'"

Oh, in this case I suspect that was a JPEG file with the wrong PNG 
extension, and it worked as designed.

Petko

> On Wed, 27 Dec 2023 at 00:07, Petko Yotov <5ko at 5ko.fr> wrote:
> 
>> Thanks for the report, there was an omission in DDMU, should be
>> fixed in
>> 20231226, please update both ddmu.php and ddmu.js.
>> 
>> Unlike the core upload form, DDMU did not report the detected MIME
>> type.
>> Version 20231226 does, when you place the mouse over the failed file
>> 
>> name, it says "extension 'gpx' doesn't match file type 'text/xml'".
>> 
>> The detected MIME type for a GPX file appears to be text/xml. So to
>> allow this alternative MIME type, place the following in config.php:
>> 
>> $EnableUploadMimeMatch = array(
>> 'gpx'=>'!^(text/xml)$!',
>> );
>> 
>> Instead of $EnableUploadMimeMatch = 1;
>> 
>> Alternatively, you could technically define:
>> 
>> $UploadExts['gpx'] = 'text/xml'; # avoid this
>> 
>> ...but I suspect this might cause problems when
>> $EnableDirectDownload is
>> disabled and the attached GPX files are used to draw lines on maps.
>> 
>> Petko
>> 
>> On 26/12/2023 10:59, Simon wrote:
>>> in config.php I have
>>> $UploadExts['gpx'] = 'application/gpx+xml';
>>> and am using $EnableUploadMimeMatch
>>> 
>>> Now when I try to upload (a properly formed) .gpx file
>>> DDMU gives the message 'extension "doesn't match the file type"'
>>> (which means the check is now being called and is returning a
>> message)
>>> 
>>> is there any way to determine, or to have included in the error
>>> message, what the expected mime type is?
>>> While many [3] references [4] on the internet state the above
>>> (application/gpx+xml) is the mime type for .gpx files
>>> MIME File Type Checker - HTMLStrip [5] suggests it it "text/xml",
>> but
>>> I think that is because it doesn't know about.gpx files
>>> 
>>> Others are suggested here [6].
>>> Is it possible to add multiple values to $UploadExts?
>>> OTOH the PmWiki documentation [1] suggests that
>>> 
>>> $EnableUploadMimeMatch = array(
>>> 'csv'=>'!^(text/plain|application/csv)$!',
>>> 'docx'=>'!^(application/encrypted)$!',
>>> );
>>> 
>>> is the way to manage this issue.
>>> 
>>> thanks
>>> 
>>> Simon
>>> 
>>> PS
>>> PHP: mime_content_type - Manual [7] seems to suggest the
>>> svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
>> [1] [3] is
>>> the source of PHP mime types.
>>> 
>>> On Mon, 25 Dec 2023 at 18:57, Petko Yotov <5ko at 5ko.fr> wrote:
>>> 
>>>> On 25/12/2023 07:20, Simon wrote:
>>>>> My feeling is that all uploads should be denied.
>>>> ...
>>>>> for safety and visibility reasons I support denying uploads
>>>> 
>>>> Agreed, enabled for 2.3.30, and added a new upload error message.
>>>> 
>>>>> When using DragDropMultiUpload the upload never finished and
>>>>> never faulted, it just hung.
>>>>> Is there any possibility of making this visible to the user?,
>> e.g.
>>>>> DDMU fail with an error,
>>>> 
>>>> Yes, the code I committed for 2.3.30, and the prerelease, should
>>>> show
>>>> the message in DDMU.
>>>> 
>>>> Petko
>>>> 
>>>>> On Mon, 25 Dec 2023 at 10:48, Petko Yotov <5ko at 5ko.fr> wrote:
>>>>> 
>>>>>> Apparently on Windows you need to enable the Fileinfo functions
>>>> in
>>>>>> php.ini, see:
>>>>>> 
>>>>>> https://www.php.net/manual/en/fileinfo.installation.php
>>>>>> 
>>>>>> I have now documented this on the UploadVariables page.
>>>>>> 
>>>>>> What should PmWiki do if $EnableUploadMimeMatch is enabled but
>>>> not
>>>>>> Fileinfo?
>>>>>> 
>>>>>> - Act as if $EnableUploadMimeMatch is not enabled. This would
>>>> work
>>>>>> as it
>>>>>> did before, other checks will be done.
>>>>>> 
>>>>>> - Deny all uploads, since none can be checked.
>>>>>> 
>>>>>> What do you think?
>>>>>> 
>>>>>> Petko
>>>>>> 
>>>>>> On 24/12/2023 21:28, Simon wrote:
>>>>>>> Some time ago I enabled $EnableUploadMimematch [1]
>>>>>>> 
>>>>>>> Recently I see
>>>>>>> 
>>>>>>> [25-Dec-2023 08:25:00 Pacific/Auckland] PHP Fatal error:
>>>> Uncaught
>>>>>>> Error: Call to undefined function mime_content_type() in
>>>>>>> D:\Home\KiwiWiki\pmwiki\scripts\upload.php:405
>>>>>>> Stack trace:
>>>>>>> #0 D:\Home\KiwiWiki\pmwiki\scripts\upload.php(317):
>>>>>>> UploadVerifyBasic()
>>>>>>> #1 D:\Home\KiwiWiki\pmwiki\pmwiki.php(546): HandlePostUpload()
>>>>>>> #2 D:\Home\KiwiWiki\pmwiki\pmwiki.php(533): HandleDispatch()
>>>>>>> #3 {main}
>>>>>>> thrown in D:\Home\KiwiWiki\pmwiki\scripts\upload.php on line
>> 405
>>>>>>> 
>>>>>>> just wondering if anyone had an idea why?
>>>>>>> 
>>>>>>> and seasons holiday's greetings from the summery south
>>>>>>> 
>>>>>>> Simon
>>>>>>> 
> 
> 
> Links:
> ------
> [1] 
> http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types



More information about the pmwiki-devel mailing list