Fix: WooCommerce – Sorry, this file type is not permitted for security reasons.

Advertisement

Solution: Solution:

Add below filter to fix the file permission issue of WooCommerce.

<?php
/**
* Fix: WooCommerce – Sorry, this file type is not permitted for security reasons.
*
* @since 1.0.0
*/
if( ! function_exists( 'prefix_woocommerce_csv_product_import_valid_filetypes' ) ) :
function prefix_woocommerce_csv_product_import_valid_filetypes( $defaults ) {
// Override for the PHP version 7.2.
$defaults['csv'] = 'text/plain';
return $defaults;
}
add_filter( 'woocommerce_csv_product_import_valid_filetypes', 'prefix_woocommerce_csv_product_import_valid_filetypes' );
endif;

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

4 thoughts on “Fix: WooCommerce – Sorry, this file type is not permitted for security reasons.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: