I do a lot of work on WordPress sites and one of the common issues I see is with administrators trying to increase the file size upload limits. They either have difficulty finding the correct place to increase this limit or forget to increase things like script execution to allow for file processing times.
In this post I hope to address all these issues and explain what these commands actually do.
The important settings.
There are actually 5 settings related to file upload limits and execution times in PHP.
This is the total memory allocated to a single PHP script. This figure needs to be at least equal too or greater than “post_max_size”.
This defines the maximum size of a post request. The post will contain the upload file or files and any additional information you included, so this should be set to a value larger than the “upload_max_filesize”.
This defines the maximum file size that can be uploaded.
This defines the maximum time, in seconds, a script is allowed to receive input. This includes file uploads from post and get.
Defines the amount of time, in seconds, a script is allowed to run after receiving data from post/get. This includes any processing of the file once uploaded.
Where to configure these settings.
There are a number of locations where you can configure these settings. Which files files you need to edit will depend on your host setup and if you are on a shared server you may need to contact your hosting provider.
Please note that the values used below are examples and you will need to modify them to suit your requirements.
This is the primary configuration file for php and the location will differ depending on your configuration.
You can find the file by creating a phpinfo.php file with the following content in your websites root directory:
<?php phpinfo(); ?>
Look for the section “Loaded Configuration File”.
Once you have located the file edit or add the following lines:
memory_limit = 110M post_max_size = 100M upload_max_filesize = 90M max_input_time = 300 max_execution_time = 300
You can also set these values in the .htaccess file in your websites root directory, if this file doesn’t exist you can create it.
Add the following lines to the file:
php_value memory_limit 110M php_value post_max_size 100M php_value upload_max_filesize 90M php_value max_input_time 300 php_value max_execution_time 300
Within your WordPress theme there should be a functions.php file. Add or edit the following lines in that file.
@ini_set( 'memory_limit', '110M' ); @ini_set( ‘post_max_size’, ‘100M’); @ini_set( ‘upload_max_size’ , ‘90M’ ); @ini_set( `max_input_time`,`300`); @ini_set( ‘max_execution_time’, ‘300’ );
Other things to check
In addition to the settings above there are some other settings that may or may not have been set depending on your setup. If you above doesn’t work you can check the following items.
WordPress Memory Limit
WordPress has an internal memory limit setting which restricts the amount of PHP memory it can use. This is done by editing the wp-config.php file and modifying the follwoing line:
Another setting that can be used to restrict file upload sizes is Apaches LimitRequestBody setting. This is located in your Apache configuration file or the .htaccess file. It will look something lime the following:
<Directory "/var/www/blogs/wp-uploads"> LimitRequestBody 102400 </Directory>
If this is not set then Apache is not limiting upload sizes. If you are on a shared host this is something your provider might set.
I think that about covers everything, comments are welcome as even though I have proof read this I wouldn’t be surprised if I missed something.