cPanel File Manager Upload Fails for Files Over 2MB
Large file uploads in cPanel File Manager usually fail due to PHP upload limits. Here's how to raise them in three specific spots.
Cause 1: PHP upload_max_filesize and post_max_size are too low
This is the most common culprit. cPanel's File Manager uploads files through PHP, and by default PHP sets upload_max_filesize to 2MB on many shared hosts. If your file is bigger than that, the upload just stops. No error, no pop-up. The progress bar gets to 100% and hangs, or the page refreshes and the file's not there.
Where to check first: Log into cPanel and scroll down to the Software section. Click MultiPHP INI Editor. If you don't see that, look for Select PHP Version then Switch to PHP Options.
Once you're in the INI editor, you'll see a list of settings. Find these two:
upload_max_filesize– set this to 64M (or whatever size you need, but 64M covers most cases)post_max_size– set this to 80M. This must be larger than upload_max_filesize. If post_max_size is 20M and upload_max_filesize is 64M, it still fails.
Click Apply. After a few seconds, you should see a green success message at the top of the page. Now go back to File Manager and try uploading again. If it still fails, read on — there are two more places to check.
Cause 2: The .htaccess file overrides the PHP settings
cPanel's MultiPHP INI Editor changes the master PHP configuration for your account. But if you have a custom .htaccess file in your public_html folder, it can override those settings. This catches people all the time — they update the INI, see the green bar, but the file still won't upload because .htaccess is telling PHP something different.
Here's how to check: In cPanel File Manager, navigate to public_html (or the specific folder where you're uploading). Look for a file named .htaccess. If it's not there, you'll need to show hidden files — click Settings in the top right, then check Show Hidden Files (dotfiles).
Open .htaccess with the editor (right-click, Edit). Look for lines like these:
php_value upload_max_filesize 2M
php_value post_max_size 8M
php_value max_execution_time 30
If you see them, change the values to match what you set in MultiPHP INI Editor. For example:
php_value upload_max_filesize 64M
php_value post_max_size 80M
php_value max_execution_time 300
The max_execution_time line isn't always there, but if it is, raise it to 300 seconds. A big file can take a full minute or more on a slow server.
Save the file. If you get a permissions error, you'll need to change the file permissions to 644 (right-click, Change Permissions). After saving, try the upload again. If it still fails, there's one more place.
Cause 3: The server-level php.ini (rarely needed, but real)
Some hosting providers lock down the global PHP configuration so that neither the MultiPHP INI Editor nor .htaccess can override certain values. This is uncommon on shared hosting, but with reseller accounts or VPS setups, it happens. You'll know this is the case if you've done both fixes above, the green bar showed, but the upload still fails with the same behavior.
How to test if this is the problem: Create a small PHP file in public_html called info.php with this content:
<?php phpinfo(); ?>
Now browse to http://yoursite.com/info.php. Look for the line upload_max_filesize. If it still shows 2M (or whatever the old value was), then the server-level php.ini is overriding your settings.
What to do: You need to either contact your hosting provider and ask them to increase the limits for your account, or if you have root access (VPS/dedicated), edit the main php.ini file. For cPanel servers, the main file is usually at:
/opt/cpanel/ea-php##/root/etc/php.ini
Replace ## with your PHP version, like 74 for 7.4, 81 for 8.1. Find those same two settings and change them. Then restart Apache:
/scripts/restartsrv_httpd
After that, refresh the info.php page and confirm the values changed. Your upload should work now.
Quick-reference summary table
| Cause | Symptom | Fix location | Key settings |
|---|---|---|---|
| PHP limits too low | Upload reaches 100% then stalls | cPanel > MultiPHP INI Editor | upload_max_filesize, post_max_size |
| .htaccess override | You changed INI, but upload still fails | public_html/.htaccess | php_value lines for upload, post, execution time |
| Server-level php.ini | phpinfo() shows old values despite changes | Server's php.ini (root access or host request) | Same settings, but at system level |
Real talk: 9 out of 10 times, it's Cause 1. But don't skip checking Cause 2 — it's a five-minute check that saves you from banging your head against the desk. And if you still can't upload after all three, your host might have a file size cap in the File Manager itself. Some hosts cap it at 512MB no matter what PHP says. In that case, switch to FTP or a third-party uploader like Plupload.
Was this solution helpful?