Why it occurs?

Most of the hosting providers (like Apache) set limits to the PHP memory designated for running applications and scripts. When u try to upload some contents through WordPress Management Interface, then the problem occurs : The uploaded file exceeds the upload_max_filesize directive in php.ini which is an error that occurs on your WordPress site when you upload a file that exceeds the limitations set by your webserver. This article provides some methods that would fix the error by increasing the default limit of upload_max_filesize

How to Fix the upload_max_filesize Error?

Method 1. Updating the .htaccess File

If your web server is using Apache and PHP is set as an Apache module (like me), then you can add a few lines of code in your WordPress .htaccess file to increase the max upload size in WordPress.
To access your .htaccess file, connect to your server via SSH and navigate to the folder where WordPress is installed. Open up .htaccess file in a code editor such as Vim and add the following lines:

php_value upload_max_filesize 64M
php_value post_max_size 128M
php_value memory_limit 256M
php_value max_execution_time 300
php_value max_input_time 300

This defines the max upload size in Megabytes. Replace the numbers as your requirement. The max execution time and max input time are in seconds. The execution time defines the limit of time spent on a single script.

Method 2. Editing the wp-config.php File

Another way of changing the upload size in WordPress is to define the size parameter in the wp-config.php file. To do that, access your WordPress root directory using SSH Root and locate a wp-config.php file. Then open it with Vim and add the following lines before before That’s all, stop editing! Happy publishing”line:

@ini_set( 'upload_max_size' , '20M' );
@ini_set( 'post_max_size', '13M');
@ini_set( 'memory_limit', '15M' );

Save your changes and it should increase your file upload size (?).

Last ultmate method: Updating php.ini

Since many people could not find where is php.ini, here I propse a naive way: to use the phpinfo() function. It will tell you where php.ini is located, and it will also output all the important PHP configuration information.
You can run phpinfo() by creating a .php file using Vim or whatever and calling that function. Go ahead and create the phpinfo.php file in the root folder of your WordPress with the following contents:

<?php
phpinfo();
?>

Save it and run the https://your-wordpress-site.com/phpinfo.php URL in your browser, and you should see the output of phpinfo(). Look for the following section.
phpinfo
As you see, there are two sections. The first one, Configuration File (php.ini) Path, indicates the default path of the php.ini file in your system. And the second one, Loaded Configuration File, is the path from where the php.ini file is being loaded when PHP is run.
Now you can edit the php.ini file indicated in the Loaded Configuration File section. Add the following lines to this file or change the correspoding parameters in the file:

upload_max_filesize = 256M 
post_max_size = 256M 
memory_limit = 512M 
max_execution_time = 180