Get a free website with any plan

See how
WORDPRESS

Fixing "Unable to create directory" and "unable to move uploaded file"

Last updated

IN SHORT

WordPress upload errors like unable to create directory happen when PHP cannot write to your site folders. On Flashcloud, fix this by setting your directory permissions to 755 and files to 644 via FTP or cPanel. Ensure your account owns the files, and verify you have not run out of disk space.

These two errors almost always come from the same root cause: PHP can't write to a folder it needs to write to. "Unable to create directory" shows up when WordPress tries to make a new folder (a plugin install, a theme update, an upload subfolder), and "unable to move uploaded file" shows up when WordPress can't move a file from PHP's temp location into wp-content/uploads. Fix the permissions or ownership on the target folder and both errors usually disappear.

Check permissions first

The standard convention for WordPress directories and files is 755 on directories and 644 on files. If a folder was created with the wrong permissions (common after a manual FTP upload, or a migration from another host), WordPress can read it but can't write into it.

  1. Connect via FTP or open File Manager in cPanel.
  2. Navigate to wp-content/uploads.
  3. Check the permissions on the uploads folder itself, and on the year/month subfolders inside it (e.g. 2026/09).
  4. Set directories to 755 and files to 644. In most FTP clients this is a right-click "File permissions" or "Attributes" dialog with a numeric field.

On most hosting accounts you also have shell access, so the same fix works from SSH:

find /home/youruser/public_html/wp-content -type d -exec chmod 755 {} \;
find /home/youruser/public_html/wp-content -type f -exec chmod 644 {} \;

Avoid 777. It's a common "quick fix" suggestion online, but it makes the folder world-writable, which is a security problem, not a permissions fix. 755/644 is correct and sufficient.

Check ownership

Sometimes the permissions are correct but the folder is owned by the wrong user, usually left over from a manual migration or a restore where files were extracted under a different account than the one PHP runs as. If permissions look right and the error persists, ownership is the next suspect.

Via SSH, check who owns the uploads folder:

ls -la wp-content/uploads

The owner should match your hosting account's username, not root or another account. If it's wrong, fix it (adjust the path and user to match your account):

chown -R youruser:youruser wp-content/uploads

If you don't have shell access, re-uploading the affected folder fresh via FTP usually resets ownership to your account correctly, since FTP writes files as the account you're logged in as.

Check disk space

A full disk produces exactly these errors, and it's easy to overlook because the message talks about permissions, not space. WordPress can create the directory entry but fails partway through writing the file, and the error it surfaces is misleading.

Check your disk usage in cPanel under Disk Usage, or from SSH:

df -h

If you're near your plan's limit, clear space before doing anything else: old backups sitting in public_html, an oversized debug.log file, unused plugin/theme folders, or stale media in uploads that's no longer referenced. Large debug logs are a common silent culprit if you've had WP_DEBUG_LOG enabled for a while; check wp-content/debug.log's size specifically.

If uploads still fail after fixing all three

Two less common causes worth ruling out:

  • PHP's temp directory. "Unable to move uploaded file" specifically can mean PHP's own temp upload location is misconfigured or unwritable, separate from your uploads folder. This is rare on our stack but worth a ticket if the first three checks come back clean.
  • Upload size limits. If the error only happens on larger files, check upload_max_filesize and post_max_size in cPanel → Software → MultiPHP INI Editor. A file larger than the configured limit can fail in a way that looks like a permissions error in the WordPress admin, even though the real cause is the size cap. If it turns out to be a memory limit instead of an upload limit, see fixing WordPress allowed memory size exhausted errors.

If you've confirmed permissions are 755/644, ownership matches your account, disk space isn't the issue, and the error still happens, open a ticket through Support → New ticket in the portal. A real person will check the server-level configuration for your account, which isn't something you can diagnose from cPanel alone.

Common questions

Why is WordPress saying it cannot create a directory?

PHP lacks write permissions for your destination folder. Update your directory permissions to 755 and file permissions to 644 using cPanel File Manager or FTP. If permissions are already correct, confirm your hosting username owns the directory.

Should I set my WordPress upload folder permissions to 777?

No, do not use 777. It makes your folder world-writable and creates a security vulnerability. Setting folders to 755 and files to 644 gives WordPress all the access it needs.

Why do my uploads still fail after setting the right permissions?

Your hosting account may be out of disk space. A full disk triggers these exact upload errors because files cannot finish writing. Check your usage in cPanel under Disk Usage and clear out large items like old backups or oversized debug logs.

Why do large files fail to upload while small ones work?

Your file exceeds your account size caps. Increase upload_max_filesize and post_max_size inside cPanel under MultiPHP INI Editor. Exceeding those values often mimics a permissions error inside WordPress.

CAN'T FIND IT?

Real humans answer fast.

Hosting with us? Open a ticket and a real person replies - no scripts, no upsells. Still choosing a host? The same team is included with every plan, from day one.