Wednesday, September 7, 2011

How do I increase upload file limit from 2MB to 10MB under Apache 2 UNIX / Linux web server?


Your php installation putting limits on upload file size. The default will
restrict you to a max 2 MB upload file size. You need to set the following
two configuration options:


upload_max_filesize - The maximum size of an uploaded file.

memory_limit - This sets the maximum amount of memory in bytes that a
script is allowed to allocate. This helps prevent poorly written scripts
for eating up all available memory on a server. Note that to have no
memory limit, set this directive to -1.

post_max_size - Sets max size of post data allowed. This setting also
affects file upload. To upload large files, this value must be larger than
upload_max_filesize. If memory limit is enabled by your configure script,
memory_limit also affects file uploading. Generally speaking, memory_limit
should be larger than post_max_size.

There are two methods two fix this problem.

Method # 1: Edit php.ini

Edit your php.ini file (usually stored in /etc/php.ini or
/etc/php.d/cgi/php.ini or /usr/local/etc/php.ini):

# vi /etc/php.ini

Sample outputs:


memory_limit = 32M
upload_max_filesize = 10M
post_max_size = 20M

Save and close the file. Restart apache or lighttpd web server:

# service httpd restart

Method #2: Edit .htaccess

Edit .htaccess file in your root directory. This is useful when you do not
have access to php.ini file. In this example, /home/httpd/html is
considered as root directory (you can also create .htaccess file locally
and than upload it using ftp / sftp / scp client):
# vi /home/httpd/html/.htaccess

Append / modify setting as follows:


php_value upload_max_filesize 10M
php_value post_max_size 20M
php_value memory_limit 32M

Save and close the file.

A Note About Suhosin (Optional)

This is not installed by default on many servers (latest version of
Debian, Ubuntu, and FreeBSD does install Suhosin by default). Use
phpinfo() to find out if suhosin enabled or not (create test.php):


<?php
   phpinfo();
?>

If you are using Suhosin which was designed to protect your servers
against a number of well known problems in PHP applications and on the
other hand against potential unknown vulnerabilities within these
applications or the PHP core itself. You need to edit
/etc/php.d/suhosin.ini to set correct memory and upload limit. As long
scripts are not running within safe_mode they are free to change the
memory_limit to whatever value they want.

suhosin.memory_limit=32M

No comments:

Post a Comment