Optimize your PHP installation to handle large file uploads
- Hits: 2089
Help us improve the documentation page and Win a free copy of BB Flashback PRO*
Though PHP presents a very versatile and user friendly interface for handling file uploads, the default installation is not geared for working with files in excess of 2 Mega Bytes. This article will help you configure your PHP engine for handling such large file transfers.
The php.ini File
All the configuration settings for your PHP installation are contained in the php.ini file. Sometimes these setting might be overridden by directives in apache .htaccess files or even with in the scripts themselves. However you cannot over ride some of the settings that effect file uploads with .htaccess directives in this way. So let's just concentrate on the ini file. If you do not have access to your PHP configuration file might have to contact your web hoosting service provider.
To find the location of your php.ini file and the current values for the following settings that we need to modify, please go to:
- Select Help → System Info from the drop-down menu on the Back-end of your Joomla! installation, then select the PHP Information tab.
- Select Site → Site information from the drop-down menu on the Back-end of your Joomla! installation, then select the PHP Information tab.
Look for these values:
The first one is fairly obvious if you set this off, uploading is disabled for your installation. We will cover the rest of the configuration settings in detail below.
Files are usually POSTed to the webserver in a format known as 'multipart/form-data'. The
post_max_sizesets the upper limit on the amount of data that a script can accept in this manner. Ideally this value should be larger than the value that you set for
There is no recommended settings for these two directives because it really depends on what you want to allow your users to submit, but it's important to realize that
upload_max_filesizeis the sum of the sizes of all the files that you are uploading.
upload_max_filesizeplus the sum of the lengths of all the other fields in the form plus any mime headers that the encoder might include. Since these fields are typically small you can often approximate the upload max size to the post max size.
If you do not have access to
php.iniadd the below to your
.htaccessfile in your Joomla root directory and change the values according to your needs:
php_value upload_max_filesize 10M
php_value post_max_size 20M
- When the PHP engine is handling an incoming POST it needs to keep some of the incoming data in memory. This directive has any effect only if you have used the
--enable-memory-limitoption at configuration time. Setting too high a value can be very dangerous because if several uploads are being handled concurrently all available memory will be used up and other unrelated scripts that consume a lot of memory might effect the whole server as well.
- These settings define the maximum life time of the script and the time that the script should spend in accepting input. If several mega bytes of data are being transfered max_input_time should be reasonably high.
upload_max_filesize and post_max_size
max_execution_time and max_input_time
The apache webserver has a
LimitRequestBodyconfiguration directive that restricts the size of all POST data regardless of the web scripting language in use. Some RPM installations sets limit request body to 512Kb. You will need to change this to a larger value or remove the entry altogether.