WordPress Media Upload Failed Because of File Permissions
How to diagnose upload errors without making wp-content dangerously writable for everyone.
Quick answer
Start with the exact Media Library error, then check ownership and write access for wp-content/uploads and the current year-month folder. Use host-appropriate permissions such as 755/775 for directories and 644/664 for files, avoid permanent 777, and also rule out disk quota, temp directory, MIME, upload-size, image processing, and security-rule blocks.
Problem, cause, fix, verify
Problem
Start with the exact Media Library error, then check ownership and write access for wp-content/uploads and the current year-month folder. Use host-appropriate permissions such as 755/775 for directories and 644/664 for files, avoid permanent 777, and also rule out disk quota, temp directory, MIME, upload-size, image processing, and security-rule blocks.
Why it matters
Symptoms, likely causes, checks, fixes, and verification steps.
Safe check
Confirm the visible symptom
Verify
Change one reversible setting at a time
Editorial trust
- Author
- WPlura Editorial Team
- Last reviewed
- Next review
- Sources
- 4 cited references
On this page
Diagnostic guide
Use this when the cause is still unclear
Symptoms, likely causes, checks, fixes, and verification steps.
The Problem
A WordPress media upload failure is often reported as a single vague message: the image cannot be uploaded, the directory cannot be created, the file cannot be moved, or the upload stops after reaching 100 percent. File permissions are a common cause, especially after a host migration, backup restore, manual SFTP upload, ownership change, or security hardening pass that made wp-content less writable than WordPress needs.
The important detail is scope. If every small image fails with a message about creating or moving files, investigate the uploads directory first. If only large files fail, PDF uploads fail, SVG files are rejected, or image processing times out, permissions may be only one part of the problem. Treat the error text, failing file type, and target path as evidence before changing chmod values.
Symptoms to Confirm
- The Media Library or editor says WordPress cannot create a directory such as wp-content/uploads/2026/09.
- The upload reaches the server but WordPress cannot move the uploaded file into the uploads folder.
- Only files saved after a migration or restore fail, which can point to a mismatched owner or group.
- Small images upload but large images fail, which points more toward upload limits, temp storage, memory, or image processing.
- Uploads work for one administrator but fail for another only when a security plugin, file-type policy, or role rule is involved.
First Checks Before Permission Changes
- Copy the exact upload error and note whether it names a path, file type, image size, or HTTP status.
- Try a tiny JPEG or PNG through Media, Add New, then try the browser uploader fallback if the modern uploader behaves differently.
- Check whether the current month folder exists under wp-content/uploads and whether WordPress can create the next folder.
- Review WordPress Site Health and host logs for disk quota, temp directory, PHP memory, upload_max_filesize, post_max_size, and image library errors.
- Confirm whether the site was recently moved, restored, cloned from staging, or edited over SFTP by a different system user.
This sequence separates upload-folder write access from unrelated media problems. WordPress documentation expects the uploads area to be writable when WordPress needs to save user-supplied media, but the safest permission pattern depends on how PHP runs on the host.
How to Fix Upload Folder Permissions
- Back up the current file state or take a restore point before changing ownership or recursive permissions.
- Ask the host or server administrator which user and group should own WordPress files for this account.
- Set wp-content/uploads and its subdirectories to a host-appropriate writable directory mode, commonly 755 or 775 depending on the server model.
- Keep uploaded files at a normal file mode such as 644 or 664 unless the host documents a different requirement.
- Repair ownership on the affected year-month folder when files were restored or uploaded by root, a deployment user, or the wrong SFTP account.
- Create the missing year-month directory only if WordPress cannot create it, then retest a new upload from wp-admin.
- Remove any temporary broad permission test immediately after the cause is confirmed.
Avoid copying one chmod command from a forum into every WordPress install. Shared hosting, PHP-FPM pools, containers, managed WordPress platforms, and VPS deployments can need different owner and group combinations. If changing a folder to 775 fixes the upload but 755 does not, the real question is whether the web server user belongs to the expected group.
When Permissions Are Not the Cause
- Upload size limits: increase PHP and web server limits only after confirming small files still upload successfully.
- Disk or inode quota: the uploads folder can look writable while the account has no space left for new media.
- Temporary directory access: PHP may accept the upload but fail before WordPress moves it into wp-content/uploads.
- Image processing: very large images can fail during resizing if memory, Imagick, GD, or execution time limits are too low.
- MIME or file extension policy: WordPress or a security plugin may reject the file type before permissions matter.
- Security rules: ModSecurity, WAF rules, or plugin firewalls can block multipart upload requests or REST/admin-ajax endpoints.
- Custom upload path settings: old migrations can leave an outdated uploads path that points outside the current account.
These checks prevent a common failure mode: making uploads globally writable because a large image, server quota, or firewall rule was the real blocker. Fix the layer that owns the evidence, then test a new upload and one existing Media Library item.
Verify the Fix
- Upload a small JPEG or PNG and confirm WordPress creates the current year-month folder if it did not already exist.
- Open the attachment page or file URL to confirm the media item is readable by visitors.
- Upload the original failing file and compare the result to the first error message.
- Check that directories are not left at 777 and files are not executable unless the host explicitly requires it.
- Record the final owner, group, directory mode, file mode, and server-side owner of the setting.
How WPlura Helps
Web Plura Diagnostics is the better WPlura fit for this workflow because the plugin focuses on local site health, hosting, upload limits, key file permissions, front-end response, and support-safe exports. It does not repair permissions automatically or replace hosting support. It helps an admin collect the signals that decide whether the next owner is WordPress, the host, the deployment process, or a security rule.
Diagnostic guide support tool
Web Plura Diagnostics
Free local diagnostics for Site Health-style checks, hosting constraints, upload limits, key file permissions, front-end response, support-safe snapshots, and JSON/CSV exports inside WordPress.
Prevent the Same Upload Failure
- Document the correct owner, group, directory mode, and file mode for the host instead of relying on memory.
- After migrations and restores, test a new upload before handing the site back to editors.
- Do not use a different SFTP, root, or deployment user to overwrite uploads unless ownership is repaired afterward.
- Keep upload-size, memory, image processing, and quota checks in the same runbook as permissions.
- Review wp-config.php and server settings only when evidence points to a custom uploads path or broader file-permission drift.
A good upload-permission fix should leave WordPress able to write new media while keeping private configuration files and executable code tighter than public assets. That balance is why related file-permission checks, including wp-config.php permissions, belong in the same maintenance habit.
References
References
- Changing File Permissions - WordPress Developer Resources, accessed 2026-09-17
- Hardening WordPress - WordPress Developer Resources, accessed 2026-09-17
- Use Image and File Attachments - WordPress.org Documentation, accessed 2026-09-17
- Media Add New Screen - WordPress.org Documentation, accessed 2026-09-17
Frequently Asked Questions
What permissions should wp-content/uploads use?
Many WordPress hosts use 755 for directories and 644 for files, while some group-based setups use 775 and 664. Use the model your host documents, keep ownership correct, and avoid leaving uploads at 777.
Why does WordPress say it cannot create the uploads directory?
The current year-month folder may be missing, owned by the wrong user, blocked by the wrong group, or located on an account that has reached disk or inode quota. Confirm the path in the error before changing permissions.