Solution: Solution:
Add below filter to fix the file permission issue of WooCommerce.
The reason of this issue is: The reason of this issue is:
Getting different REAL MIME type from function finfo_file
.
The issue maybe the different Operating Systems or due to Different PHP versions.
But, While debugging the issue, When I try to upload the XML on localhost I got the text/xml
as a real MIME type and on live site its application/xml
.
Below is the debugging steps:
File: /wp-includes/functions.php
line 2346
// Validate files that didn't get validated during previous checks. if ( $type && ! $real_mime && extension_loaded( 'fileinfo' ) ) { $finfo = finfo_open( FILEINFO_MIME_TYPE ); $real_mime = finfo_file( $finfo, $file ); finfo_close( $finfo ); // @DEBUGGING... echo '<pre>'; var_dump( FILEINFO_MIME_TYPE ) . '<br/>'; var_dump( $finfo ) . '<br/>'; var_dump( $file ) . '<br/>'; var_dump( $real_mime ) . '<br/>'; wp_die();
The output of the above code is below on LOCALHOST:
- PHP: Version 7.2.4
- System: Windows NT M 6.3 build 9600 (Windows 8.1 Professional Edition) i586
int(16) resource(767) of type (Unknown) string(46) "C:\Users\Yum\AppData\Local\Temp/wxr-LccAYF.tmp" string(8) "text/xml"
But, It is different on the LIVE site.
- PHP: Version 7.0.32-4+ubuntu16.04.1+deb.sury.org+1
- System: Linux ip-172-31-25-204 4.4.0-134-generic #160-Ubuntu SMP Wed Aug 15 14:58:00 UTC 2018 x86_64
int(16) resource(747) of type (Unknown) string(19) "/tmp/wxr-YNkiH5.tmp" string(15) "application/xml"
Testing on different PHP versions: Testing on different PHP versions:
PHP Code
echo 'PHP Version: ' . phpversion() . "<br/><br/>"; echo 'file.vtt | ' . mime_content_type( 'file.vtt') . "<br/>"; echo 'file.xml | ' . mime_content_type( 'file.xml') . "<br/>";
On Localhost – PHP Version: 7.2.4
PHP Version: 7.2.4 file.vtt | text/plain file.xml | text/xml
On Live – PHP Version: 7.0.32
PHP Version: 7.0.32-4+ubuntu16.04.1+deb.sury.org+1 file.vtt | text/plain file.xml | application/xml
Thanks A lot. Your provided solution worked.
Yup!
Hello, where do i input the code???
You can put the code in your themes functions.php file or you can also create another plugin.