DriversRecommendedOutdated drivers can make a good PC feel brokenScan driver issues before chasing fixes manually.Scan NowOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PC×
Skip to content
World desk8 min

File Upload Limit Problems on Shared Hosting: Why They Happen and How to Fix Them

A shared-hosting upload fails when any limit on its request path rejects it. Here is how to find the layer that is actually blocking the file before you change settings.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

An upload succeeds only when every limit along its request path accepts it. On shared hosting, the limit that stops a file is often one you cannot raise yourself, so the fix starts with identifying which layer rejects the request. Changing the first upload setting you find rarely settles the problem.

Why the limit is lower than you expect

There is no universal shared-hosting upload maximum. The effective value depends on the host, the PHP version and configuration serving your site, the web server in front of PHP, account controls, and the application doing the upload. Many hosts set these values at server level. WordPress’s PHP guidance states that on shared hosting “those limits are usually set on a server level and you may not be able to modify them or increase them above a certain value” (WordPress Developer Handbook, last updated July 7, 2025).

As an Amazon Associate I earn from qualifying purchases.

cPanel’s PHP upload-limit article, dated April 11, 2026, uses a 2 MB default as its starting point. That figure describes cPanel’s documented example, not the setting on every shared host. Check the values your own site is actually running before assuming any particular number.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Map the request path

A file travels through several layers, and each can reject it with a different symptom. The table shows where each limit applies and what failure it typically produces.

Layer What it caps Where it is usually set Typical symptom
Application (WordPress, a forum, a plugin) Its own maximum file size, which can differ from PHP’s value The application’s settings or plugin options An application-branded error; the file may never reach PHP
upload_max_filesize One uploaded file php.ini, MultiPHP INI Editor, or the host PHP rejects the file; the application may show a generic “upload failed” message
post_max_size The entire POST body, including the file and all other form fields Same as above The application receives empty $_POST and $_FILES, so the file appears to be missing
memory_limit RAM the script can use, including while it processes the file Same as above A fatal error reporting allowed memory exhausted
max_execution_time and max_input_time How long the script and input parsing may run Same as above, or the host A failure after a long transfer
Web server or reverse proxy (Nginx client_max_body_size, Apache LimitRequestBody) Total request body size before PHP sees it Server or host configuration An HTTP 413 response, often a server-styled error page
Account quota and cPanel File Manager submission size Disk space and the File Manager HTTP submission limit cPanel File Manager settings or the account administrator File Manager refuses the upload, sometimes with a quota-related message

The PHP settings that get confused

Four PHP directives cause most of the confusion. Each controls a different part of the request, and raising one does not relax the others.

upload_max_filesize

This caps the size of a single uploaded file. PHP’s built-in default is 2M, as listed in the PHP manual’s core directives. When a file exceeds it, PHP discards the file and reports an upload-size error to the application, which often displays a generic failure message rather than the real cause.

post_max_size

This caps the complete POST body, so it must be large enough for the file plus the other form data in the same request. Its built-in default is 8M. WordPress documents that post_max_size should be greater than or equal to upload_max_filesize. If the body exceeds post_max_size, PHP empties $_POST and $_FILES, so the application can behave as though nothing was sent. That makes this one of the most misleading failures, because the error looks like a missing-file bug in the application.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

memory_limit

This is not an upload cap. It limits the RAM a script can use while it processes the request. An application that resizes, scans, or converts an uploaded file can exhaust it even when both upload sizes are correct. The built-in default is 128M. Setting it equal to the file size is not automatically correct, because processing often needs more memory than the raw bytes, and a plan may not allow a high value.

Time limits

max_execution_time (built-in default 30 seconds) and max_input_time control how long a request may run. A slow connection can fail after a long transfer even when every byte limit is satisfied. Raise these only when timing or logs show a timeout and the host permits the change.

Why raising PHP values sometimes changes nothing

PHP never handles a request that the web server has already rejected. Nginx’s client_max_body_size limits the request body, and the Nginx core-module documentation states that “if the size in a request exceeds the configured value, the 413 (Request Entity Too Large) error is returned to the client.” The documented default is 1m, but a host may configure a different value.

Apache’s LimitRequestBody restricts total request-body size. It can be set in server, virtual-host, directory, or .htaccess contexts, subject to the server configuration and permissions. Apache’s documentation notes that the default changed in version 2.4.54, so the installed version matters when you compare behavior across servers.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The easiest way to tell the layers apart is the response itself. A 413 page generated by the server, rather than PHP-style error text, usually means the cap sits upstream of PHP, and editing PHP values will not help.

Some hosts allow PHP directives in .htaccess through lines such as php_value upload_max_filesize 64M. Those lines work only when PHP runs as an Apache module. Under PHP-FPM or CGI, they typically cause a 500 Internal Server Error. If the site breaks after such an edit, remove those lines first.

Diagnose in this order

  1. Identify the upload path. Decide whether the file goes through WordPress or another PHP application, through cPanel File Manager, or through an FTP or SFTP client. Record the exact error text, the file size, and whether the failure is immediate or appears only after a long transfer. An immediate rejection usually points to a cap; a failure after a long wait points toward timeouts or resource limits.
  2. Read the effective values. In WordPress, open Media > Add New and note the maximum upload file size shown on that screen, then check Tools > Site Health > Info for PHP and server details. In cPanel, open MultiPHP INI Editor (usually in the Software section), select the domain or PHP version that actually serves the site, and read upload_max_filesize, post_max_size, memory_limit, max_execution_time, and max_input_time. Confirm the selection matches the live site, because a different PHP version may be serving it. On a server with shell access, php -i | grep -E 'upload_max_filesize|post_max_size|memory_limit|max_execution_time' reports the command-line PHP configuration only, which can differ from the one the web server uses.
  3. Align PHP settings conservatively. If the control is available, set upload_max_filesize to the per-file ceiling you need, then set post_max_size higher to leave room for form fields. Keep memory_limit sufficient for processing. Change one value at a time and retest after each change, so you know which change mattered.
  4. Check upstream request-body limits. If the PHP values are high but the request still fails, look for a server-generated 413 page or the upstream limits described above. Ask the host which layer applies.
  5. Check quota and temporary capacity. For File Manager, check the Max HTTP submission size and the remaining account quota. For website uploads, processing may need temporary disk space. If the PHP values look correct and the failure suggests storage exhaustion, ask the host to check.
  6. Escalate with evidence. When the setting is not yours to change, use the checklist below.

Set values safely

cPanel’s PHP upload-limit article advises that post_max_size be at least as large as upload_max_filesize, and that memory_limit be at least as large as post_max_size. Its MultiPHP INI Editor documentation is stricter, stating: “We strongly recommend that you set this value larger than the upload_max_filesize value and smaller than the memory_limit value.” That sentence describes post_max_size. Where the two sources differ, aim for the stricter WHM wording: a post_max_size comfortably above upload_max_filesize, and a memory_limit above post_max_size.

As an illustration only, a 64 MB per-file ceiling could use upload_max_filesize 64M, post_max_size 80M, and memory_limit 256M, provided your plan permits the memory value. The cPanel article also states a 2 GB maximum for the variables in its procedure. Treat that as the documented ceiling for those variables, not as proof that your plan allows uploads of that size.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

File Manager uploads and quota

File Manager is a separate path from PHP website uploads. cPanel’s File Manager article, dated May 22, 2026, describes a Max HTTP submission size setting and a default requirement that 5 MB of quota space remain after the upload. An account administrator can adjust that requirement. A File Manager failure with correct PHP values therefore points to submission size or quota, not to the PHP upload settings. A full account quota blocks uploads regardless of how the limits are set.

Escalate to the host with specific evidence

When a value is locked or the cap sits at server level, a precise support request gets a faster answer. Include:

  • The exact file size in bytes or MB, and the page or endpoint where the upload was attempted.
  • The timestamp, with time zone, of a failed attempt.
  • The error text or HTTP status, such as 413 or 500.
  • The active PHP version and the values you read in step 2.
  • Whether the failure was immediate or came after a long transfer.
  • A direct question: which layer rejects the request, and whether your plan allows a higher cap.

If the host confirms a firm limit, a host-approved alternative such as SFTP can move large files without going through the web upload form. That changes the transfer route only. It does not change storage quota or the host’s rules.

When a plan change is the right answer

Consider a different plan when:

  • The host confirms that the cap is set at server level and cannot be raised for your plan.
  • The per-file size you need is consistently above what the host will allow.
  • Your control panel hides the PHP settings you need, and the host will not change them for you.

Compare plans on the published upload and request limits, whether PHP directives are editable in the panel, support response for server-level changes, storage quota, and supported transfer methods such as SFTP. A higher-priced plan does not automatically fix an upload problem, so confirm the published limits with the provider before moving a site.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Outdated Drivers Are Slowing You DownFree scan - exact matches
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.