ID: 48885 Comment by: matthew at zend dot com Reported By: majkl578 at gmail dot com Status: To be documented Bug Type: Filesystem function related Operating System: Linux Debian PHP Version: 5.3.0 New Comment:
I beg to differ a bit here with the assertion that the change is not a BC break. Consider this: in versions prior to 5.3.0, one could do a match like this: $finfo = new finfo(FILEINFO_MIME); $type = $finfo->file($filename); if (!in_array($type, array('image/jpeg', 'image/jpg'))) { echo "Invalid image type."; } else { echo "JPEG found." } Now, with 5.3.0, this changes; the same assertion no longer works. This is in fact exactly an issue we had with Zend_Validate_File_MimeType when testing against PHP 5.3.0 -- matching that worked in 5.2.x now no longer works in 5.3.0. We have altered our library to handle the strings returned by both versions, but that exactly disproves your point: if the new behavior were BC, we wouldn't *need* to update our code. I feel at the very least, the fact that the MIME type returned also includes encoding information, and the format of this encoding information, needs to be documented in the manual, and likely the UPGRADING guide. Previous Comments: ------------------------------------------------------------------------ [2009-07-12 23:16:53] scott...@php.net As Pierre has said already this is the way libmagic works and it matches the RFC for mime type. The charset on non text documents is also valid, even if it just says binary. So there isn't a BC break here unless you were using the mime type for something else. ------------------------------------------------------------------------ [2009-07-12 13:33:48] paj...@php.net The fileinfo extension has been bundled in PHP (5.3 and later). The development takes place only in PHP, not anymore in PECL. Old releases may have issues or may not be compliant with the RFC. Like it or not, that's a fact. For the binary data, the charset will obviously be set to binary: image/gif; charset=binary It is a documentation, not a bug neither a BC break. ------------------------------------------------------------------------ [2009-07-12 12:32:34] majkl578 at gmail dot com Look: I tested the code mentioned in bug report on php 5.2.10, i used a JPEG image: On php 5.3.0 returns 'image/jpeg; charset=binary' On php 5.2.10 returns 'image/jpeg' only. So, my question is: is it a bug or a feature in 5.3? If it's a feature: 1. it is NOT backward compatible. 2. it does not have any meaning for files like images etc, only for text files. So? ------------------------------------------------------------------------ [2009-07-11 22:45:11] paj...@php.net pls update this example ------------------------------------------------------------------------ [2009-07-11 21:15:18] majkl578 at gmail dot com ok sorry for this. but if it is correct, informations here: http://php.net/manual/en/function.finfo-file.php are misleading (see Example #1), because there is not mentioned anything about this, just about mime type. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/48885 -- Edit this bug report at http://bugs.php.net/?id=48885&edit=1