cPanel File Manager Won't Extract ZIP Files: Causes and Fix
You zip up a folder on your desktop, drag it into cPanel's File Manager, hit "Extract" - and nothing. The spinner runs forever, or you get a flat "Extraction Failed" message with no useful detail. Sometimes it's the other direction: you select a big folder, click "Compress," and end up with a ZIP that's a few KB when it should be gigabytes. Here's what's actually going on and how to fix it without losing files.
Symptom
A few variations of the same underlying problem show up in support tickets:
- Clicking Extract in File Manager spins for a long time, then times out or refreshes with no files extracted.
- Extraction "succeeds" but only some files appear - the archive looks partially unpacked.
- Clicking Compress produces a ZIP that's suspiciously small, or the download fails partway through.
- You get a generic
Internal Server Erroror a blank white page right after starting the operation.
Why This Happens
File Manager's Extract and Compress buttons aren't separate system tools - they're PHP calling into ZipArchive under your hosting account's PHP process. That means every limit that applies to a normal PHP script applies here too, and a big archive blows past them fast.
1. PHP execution time and memory limits
Extracting a 500 MB archive with thousands of small files can take minutes of CPU time and hold a lot of memory while PHP walks the file list. Shared hosting PHP defaults are usually tuned for web requests, not batch jobs - so max_execution_time (often 30-60s) or memory_limit (often 128M-256M) gets hit mid-extraction. The process is killed, and whatever was written up to that point just sits there as a partial extract.
2. Disk quota gets hit mid-extraction
If your account is close to its disk quota, extraction can run fine for the first few hundred files and then fail the moment the account goes over quota. cPanel won't roll back what was already written - you're left with a half-extracted folder and a quota-exceeded error buried in the logs.
3. The ZIP itself is corrupted
Uploads that get interrupted (closed laptop lid, flaky Wi-Fi, browser tab crash) can leave a ZIP that looks complete in the file size but fails its internal checksum. File Manager usually reports this as a generic failure rather than "this archive is broken," which sends people chasing the wrong cause.
4. Ownership and permission conflicts on extract
If you're extracting into a directory that already has files created by a different process - a plugin, a cron job, or WP-CLI over SSH - ownership can be inconsistent. Extraction can succeed for files it owns and silently skip ones it doesn't have write access to.
5. File Manager just isn't built for very large archives
Even with generous PHP limits, unpacking tens of thousands of files through a web-based file manager is slow by design. It reads and writes through PHP's abstraction layer instead of the filesystem directly, so a 2 GB WordPress backup ZIP with a huge uploads folder is exactly the case where it struggles most.
The Fix
Step 1: Check your disk quota first
In cPanel, open Statistics in the left sidebar (or check the disk usage widget on the main dashboard). If you're within a few hundred MB of your limit, extraction will fail no matter what else you fix. Free up space or ask Getwebup to bump the quota before trying again.
Step 2: Verify the ZIP isn't corrupted
On your own computer, before re-uploading, try opening the archive with your OS's built-in tool or 7-Zip's "Test Archive" feature. If it reports errors there, re-zip the source folder fresh and re-upload - don't waste time debugging a broken file on the server.
Step 3: Use Terminal instead of File Manager for anything over ~500 MB
If your plan includes cPanel's Terminal (or you have SSH access), this is the real fix for large archives - it bypasses PHP's execution limits entirely because unzip and tar run as native processes, not PHP scripts:
cd public_html
unzip -o mybackup.zip
# for .tar.gz archives:
tar -xzvf mybackup.tar.gz
This alone resolves the vast majority of "File Manager extraction hangs" tickets. A file that times out after 60 seconds in File Manager often finishes in under 10 seconds from the command line.
Step 4: Raise PHP limits if you must use File Manager
If Terminal isn't available on your plan, go to WHM/cPanel > MultiPHP INI Editor, select the domain, and switch to Editor Mode to raise:
| Setting | Typical default | Try |
|---|---|---|
max_execution_time | 30-60 | 300 |
memory_limit | 128M-256M | 512M |
max_input_time | 60 | 300 |
Save, then retry the extraction. Remember to lower these back afterward if the site doesn't need them permanently - a very high execution time on a public-facing PHP process is a minor abuse vector if left in place.
Step 5: Fix leftover permission problems after a partial extract
If a previous attempt left a half-extracted mess with mixed ownership, clean it up via Terminal or SSH rather than by hand in File Manager:
find /home/username/public_html/folder -type d -exec chmod 755 {} \;
find /home/username/public_html/folder -type f -exec chmod 644 {} \;
chown -R username:username /home/username/public_html/folder
Step 6: Split very large archives
For a full site migration with a huge wp-content/uploads folder, don't zip the whole thing into one file. Zip the core site separately from the uploads directory, or split uploads by year-based subfolder. Smaller archives extract faster, fail less, and are much easier to retry if something goes wrong partway through.
Prevention
- Keep at least 10-15% free disk space as headroom before any bulk extract or compress operation.
- For anything over a few hundred MB, use SSH/Terminal with
unziportarinstead of clicking through File Manager. - Test archive integrity locally before uploading, especially after a slow or interrupted upload.
- When migrating a full WordPress site, consider WP-CLI or a proper migration plugin instead of manual ZIP extraction - it avoids this class of problem entirely.
- If you regularly move large backups, ask about SSH/Terminal access on your Getwebup plan rather than routing everything through the browser.
If you've tried the above and extraction still fails outright - not just slowly, but with a hard error every time - open a ticket with Getwebup support and mention the exact error text and archive size. That's usually enough for us to check server-side logs and confirm whether it's a quota, permission, or PHP-FPM issue specific to your account.
Frequently asked questions
Why does cPanel File Manager time out when extracting a large ZIP?
File Manager's Extract button runs through PHP, which has execution time and memory limits meant for normal web requests. A large archive with thousands of files can exceed both, so the process gets killed mid-extraction and only some files get unpacked.
What's the fastest way to extract a large ZIP on cPanel hosting?
If your plan includes Terminal or SSH access, use 'unzip -o filename.zip' from the command line instead of File Manager. It runs as a native process with no PHP timeout, so archives that hang for minutes in the browser often finish in seconds.
My extraction stopped partway through - are my files corrupted?
Usually not corrupted, just incomplete. Check your disk quota first (a mid-extraction quota breach is a common cause), then delete the partial folder and re-extract using Terminal or with higher PHP limits set in MultiPHP INI Editor.
Why did Compress create a ZIP file that is way too small?
This almost always means the operation hit a PHP memory or execution limit and stopped writing to the archive before it finished walking the folder. Raise memory_limit and max_execution_time in MultiPHP INI Editor, or compress via SSH with the tar or zip command instead.
Should I avoid File Manager entirely for big migrations?
For anything over a few hundred MB, yes - use SSH/Terminal with unzip/tar, or a proper WordPress migration plugin/WP-CLI. File Manager is fine for small day-to-day file edits, but it was never designed to be a bulk archive tool.