Skip to main content
Ahosting Logo
  • Hosting
    • WordPress Hosting
      Fast, secure hosting for WordPress sites
    • Web Hosting
      Reliable, affordable hosting for sites
    • FFMpeg Hosting
      Fast hosting for FFmpeg projects
    • Reseller Hosting
      Start hosting biz with white-label plans
    • VPS Hosting
      Scalable VPS with full control & power
    • Dedicated Server
      High-power servers for max security
    • WooCommerce Hosting
      Fast hosting for WooCommerce shops
  • Domain
    • Register a Domain
      Secure your domain name in minutes
    • Domain Transfer
      Move domains to Ahosting with ease
    • Premium SSL Certificate
      Enterprise SSL to build customer trust
  • Support
    • Submit A Ticket
      Expert 24/7 help from our support team
    • Abuse Report
      Report abuse to keep network safe
    • Knowledge Base
      Quick answers via step-by-step guides
  • Company
    • Blog
      Expert articles to power your online growth
    • Compare Hosts
      Side-by-side comparison
    • Datacenter
      Secure, high tech datacenter for hosting
    • About Us
      Learn about our mission, values & team
    • Contact Us
      Contact sales for plans, pricing & advice
    • Sitemap
      Find info fast with our clear site map
My Account
Ahosting Logo
  • Hosting
    • Web Hosting
    • WordPress Hosting
    • FFMpeg Hosting
    • Reseller Hosting
    • VPS Hosting
    • Dedicated Server
    • WooCommerce Hosting
  • Domain
    • Register a Domain
    • Domain Transfer
    • Premium SSL Certificate
  • Support
    • Knowledge Base
    • Abuse Report
    • Submit A Ticket
  • Company
    • About Us
    • Contact Us
    • Blog
    • Sitemap
    • Datacenter
  • Legal
    • Privacy Policy
    • Terms of Service
    • Acceptable Use Policy
    • Service Level Agreement
    • Resource Abuse Policy
My Account

AHosting Blog

Installation Failed: Could Not Create Directory? Find the Folder, Then the Cause

AHosting card on could not create directory, showing the two install steps that create folders and the three reasons a server refuses one.

Matt Chrust

Director of Business Development, AHosting Matt has led business development at AHosting since the company’s founding in 2002. He writes about WordPress hosting infrastructure, server performance, and the evolving requirements of WordPress sites at scale.

Last Updated

October 5, 2026
Home » WordPress » Installation Failed: Could Not Create Directory? Find the Folder, Then the Cause
  • What “Installation Failed: Could Not Create Directory” Means
    • The Sentence Leaves Out the Two Things You Need
    • Why WordPress Cannot Tell You the Reason
  • Where Could Not Create Directory Comes From: Five Places, One Sentence
    • Unpacking Into wp-content/upgrade
    • Moving Into wp-content/plugins or themes
  • Get the Path WordPress Hid From You
    • Upload the Plugin Zip Instead
    • Turn On WP_DEBUG and Read the Browser Console
    • What the Folder in the Path Tells You
  • Why a Full Account Says Could Not Create Directory
    • The Disk-Space Check Only Runs in the Background
    • Folders Are Created Before Any File
    • What the Server Actually Said
    • Read Both Meters in cPanel
  • When Could Not Create Directory Really Is Permissions
    • The Modes WordPress Expects
    • Why chmod 777 Is the Wrong Fix
    • Ownership After a Migration or Restore
  • “Could Not Create the upgrade-temp-backup Directory” on Updates
  • How to Fix Could Not Create Directory, in Order
  • Could Not Create Directory on AHosting Servers
  • A Practical Checklist for Could Not Create Directory
  • Frequently Asked Questions: Could Not Create Directory
    • What does Installation failed: Could not create directory mean in WordPress?
    • Which folder does WordPress fail to create when a plugin install fails in 2026?
    • Could not create directory vs Could not copy file: what is the difference in WordPress?
    • Disk space vs inode limit: which one causes could not create directory on shared hosting?
    • Why does could not create directory appear when cPanel shows free disk space?
    • Is chmod 777 on wp-content a safe fix for could not create directory?
    • How do I see the full error path in WordPress 7.1 in 2026?
    • Does AHosting shared hosting let WordPress create plugin folders directly in 2026?
    • Can AHosting support fix could not create directory on my WordPress site?
    • Do I need an AHosting VPS to stop WordPress plugin install errors in 2026?
TL;DR

Installation failed: Could not create directory means the server refused a new folder, and WordPress hides both which folder and why. Get the path first: the Upload Plugin screen prints it. Then read Disk Usage and File Usage in cPanel, because on a host where PHP runs as your own user the account limits come before the permissions, and WordPress reports a full account as this exact message. Folders belong at 755. Never use 777.

What “Installation Failed: Could Not Create Directory” Means

Installation failed: Could not create directory is the line WordPress prints on the plugin card when an install stops partway, and the usual advice is to loosen permissions until it goes away. Read against the code that produces it, that advice skips two steps. The sentence means PHP asked the server for a new folder and the server said no. It does not say which folder, and it does not say why, and both of those decide the fix.

Listen: the same sentence comes from five places in WordPress, a full account prints it too, and chmod 777 fixes none of them. By Matt Chrust, Director of Business Development, AHosting.

The Sentence Leaves Out the Two Things You Need

A plugin or theme install creates folders at two separate moments: when the zip is unpacked into a working area, and when the result is put in its final place. A refusal at either moment produces the same words. The reason is just as hidden. A folder can be refused because PHP may not write to the parent, because the account has no disk space left, or because it has no file slots left, and the message is identical in all three cases.

Why WordPress Cannot Tell You the Reason

When PHP fails to make a folder, the PHP manual for mkdir() says it emits a warning describing the problem. WordPress calls it with the warning suppressed and keeps only a yes or no answer. The operating system did report a reason, and that reason is discarded before the message is written. So treat Could not create directory as a symptom with several causes, and narrow it down in the order below rather than guessing.

Where Could Not Create Directory Comes From: Five Places, One Sentence

In WordPress 7.1.2, the current release, the identical sentence is produced in five places in the install and update code. Each one is a different step, each one knows the exact folder it failed on, and each one attaches that folder to the error as its path.

StepFolder being createdError codeWhat it usually means
Unpacking with ZipArchivewp-content/upgrade/ plus every folder inside the zipmkdir_failed_ziparchiveNo room, no free inodes, or wp-content/upgrade is not writable
Unpacking with the fallback unzipperThe same folders, when ZipArchive is not availablemkdir_failed_pclzipThe same causes as above
Creating the destinationwp-content/plugins/slug/ or the theme foldermkdir_failed_destinationThe plugins or themes folder is not writable, or the account filled up
Moving into placeThe destination, when a direct move failsmkdir_failed_move_dirThe same causes as the destination step
Copying a subfolderA folder inside the destinationmkdir_failed_copy_dirThe account ran out of room partway through
Where “Could not create directory” comes from in WordPress 7.1.2 — five steps, one sentence, read from the core install code.
Where could not create directory happens during a WordPress plugin install Step one downloads the plugin zip to the temporary folder. Step two unpacks it into a working folder under wp-content/upgrade, creating every folder in the package before writing any file. Step three moves the result into wp-content/plugins under the plugin slug. Steps two and three each create folders, and either failure prints Could not create directory. WordPress attaches the folder path to the error. The Install Now button on the plugin card drops the path and shows only the sentence. The Upload Plugin screen prints the sentence followed by the path. A refused folder can mean no write permission, no disk space left in the quota, or no inodes left in the quota, and the message does not say which. Two steps create folders. Both print the same sentence. A plugin install in WordPress 7.1.2, and where “Could not create directory” comes from. 1. Download zip saved to the temp folder no folders created here 2. Unpack wp-content/upgrade/… all folders first, then files 3. Install wp-content/plugins/slug/ move, or create and copy Could not create directory. + the folder path Install Now button shows the sentence, drops the path Upload Plugin screen shows the sentence and the path No permission, no space and no free inodes all print the same line. The path is where you start.

Unpacking Into wp-content/upgrade

The unpack step creates the most folders, so it has the most chances to fail. The unzip_file() reference describes the function WordPress uses: it extracts the package into a working folder under wp-content/upgrade. WordPress empties that folder at the start of each install by itself, so leftovers from an earlier failure are not the problem and do not need clearing by hand.

Moving Into wp-content/plugins or themes

Once the package is unpacked, WordPress moves it into its final folder under the plugin or theme slug. A failure here, after a clean unpack, points at the destination folder specifically: wp-content/plugins or wp-content/themes no longer accepts new folders, or the account filled up between the two steps.

Get the Path WordPress Hid From You

The path is already in the error. The Install Now button on a plugin card simply does not show it: the card prints Installation failed: followed by the message alone. Two screens print the rest, and either one turns a guess into a specific folder.

Upload the Plugin Zip Instead

Download the plugin zip from its page in the plugin directory, then go to Plugins, Add New, Upload Plugin and install the file. That screen uses the older step-by-step output. It prints Unpacking the package or Installing the plugin, then the error followed by the full folder path, then Plugin installation failed. The step printed just before the error tells you which of the two moments failed.

Turn On WP_DEBUG and Read the Browser Console

If you would rather keep using the button, set WP_DEBUG to true in wp-config.php. With it on, the install reply carries a list of debug messages and WordPress writes each one to the browser console. Open the developer tools, switch to the Console tab, click Install Now again, and the line ending in the folder path is there. Set it back to false afterward, since debug output does not belong on a live site.

What the Folder in the Path Tells You

  • A path under wp-content/upgrade means the unpack step failed. Check the account limits first, then whether wp-content accepts new folders.
  • A path under wp-content/plugins or wp-content/themes means the unpack worked and the final folder was refused.
  • A path outside the usual wp-content folder means WP_CONTENT_DIR in wp-config.php points elsewhere. Check that the folder it names exists and is yours.

Why a Full Account Says Could Not Create Directory

This is the cause the usual guides miss, and where PHP runs as your own user it is the first one to rule out. An account at its disk or file limit cannot create a folder, and WordPress has no separate message for that during a normal install. Two details in the code explain why the failure arrives in this exact form.

The Disk-Space Check Only Runs in the Background

WordPress does contain a clearer message: Could not copy files. You may have run out of disk space. It only checks for it while running scheduled tasks, which in practice means automatic background updates. An install or update you start by clicking a button skips that check entirely. The check also reads free space on the whole disk, not what is left in your account, so even in the background it can miss a full account.

Folders Are Created Before Any File

When WordPress unpacks a zip, it first lists every folder the package needs, creates all of them, and only then writes the files. Each folder takes one inode, the slot a server uses to track one file or folder. An account a few hundred inodes from its ceiling therefore fails on a folder, not a file, and the message reads Could not create directory rather than Could not copy file. Our guide to the WordPress inode limit on shared hosting explains how an account fills its file slots with gigabytes still free.

What the Server Actually Said

The operating system does give a reason when it refuses a folder. The Linux mkdir(2) manual page lists them, and these are the ones a hosting account meets. WordPress shows all of them as the same sentence.

Reason codeWhat the manual saysWhat it means on hostingWhere to check
EDQUOTThe user quota of disk blocks or inodes is exhaustedThe account is at its disk or file limitDisk Usage and File Usage in cPanel
ENOSPCNo room for the new directory, or the disk quota is exhaustedThe same, reported differently by some filesystemsDisk Usage in cPanel
EACCESThe parent directory does not allow write permissionFolder mode too low, or the folder belongs to another userPermissions column in File Manager
EEXISTThe pathname already exists, not necessarily as a directoryA file is sitting where a folder should goThe exact path from the error
Why the server refuses a new folder — the mkdir reasons WordPress turns into one sentence.

Read Both Meters in cPanel

The cPanel sidebar shows Disk Usage and File Usage as separate figures, and either one at its limit blocks a new folder. The cPanel Disk Usage documentation notes that only your hosting provider can raise the quota itself. A plugin also needs more room than its zip suggests: the archive and its unpacked copy exist at the same moment, and the background check above asks for a little over twice the unpacked size. The same limit is behind the upload error described in our guide to Missing a temporary folder.

When Could Not Create Directory Really Is Permissions

Permissions are still a real cause, just not the first one to check. The test is simple: PHP needs write permission on the parent of the folder in the path. If it lacks it, the refusal is immediate, whatever the quota says.

The Modes WordPress Expects

Folders belong at 755 and files at 644. WordPress itself creates new folders at no less than 755. The ArchWiki page on file permissions makes the point that matters here: creating a file changes the directory, not the file, which is why write permission on the parent is what counts. The usual ways a parent loses it are a security plugin that hardens wp-content to 555, or a manual change that was never undone.

Why chmod 777 Is the Wrong Fix

A top-voted forum answer is to make wp-content 777. Mode 777 grants write access to three classes: the owner, the group, and everyone else. Red Hat’s guide to Linux file permissions explains that the third class, others, covers every account that is neither the owner nor in the group. On a shared server, that is every other process. When PHP runs as your own user, 755 already lets WordPress write. If 755 fails, the folder belongs to someone else or the account is full, and 777 fixes neither.

Ownership After a Migration or Restore

A folder owned by another user cannot be fixed with any mode you are allowed to set, because only the owner can change it. This is the same fault that makes WordPress ask for FTP details instead of writing directly, covered in our guide to WordPress asking for FTP credentials. Our knowledge base article on file permissions and ownership explains why ownership has to be corrected on the server side.

“Could Not Create the upgrade-temp-backup Directory” on Updates

Updates have a related message. Since WordPress 6.3, an update first moves the current version of the plugin or theme into wp-content/upgrade-temp-backup, so it can be restored if the new version fails. If that folder cannot be made, the update stops with Could not create the upgrade-temp-backup directory, and unlike the install error it carries no path, because the folder is always the same one.

Site Health tests this folder and marks problems as critical, but it only checks whether the folders exist and are writable. A writable folder in an account that is out of space or files passes that test and still fails the update. Check the same two meters before changing anything. An update that stops halfway can also leave the site showing the maintenance notice, which our guide to briefly unavailable for scheduled maintenance clears safely.

How to Fix Could Not Create Directory, in Order

Work through these in sequence. Each step either fixes the error or rules out a cause, and the order puts the checks you can make yourself first.

  1. Get the path. Install the zip through Upload Plugin, or turn on WP_DEBUG and read the browser console.
  2. Read Disk Usage and File Usage in cPanel. If either is near its limit, delete old backups, cache folders and unused plugins or themes, then retry.
  3. Open the folder from the path in the File Manager and check the Permissions column on it and on wp-content. Set folders to 755.
  4. Check that the name in the path is not already taken by a file. If it is, rename or remove that file.
  5. If a mode will not change, the folder is owned by another user. Stop there and contact your host.
What you foundCauseFirst fix
File Usage near its limitNo free inodes for the unpacked foldersDelete backups, caches and unused plugins, then retry
Disk Usage near its limitNo room for the zip and its unpacked copyFree space or move to a larger plan
Path under wp-content/upgrade, meters finewp-content or upgrade not writableSet both to 755
Path under plugins or themes, meters fineThe destination folder is not writableSet it to 755
A mode that will not changeThe folder belongs to another userContact your host with the full line
Everything above checks outA layer outside the accountContact your host with the path and the time
The AHosting Could Not Create Directory Decoder — what the path and the cPanel meters show, the cause, and the first fix.

Could Not Create Directory Decoder

Four questions about the failed install and your cPanel meters. The answer names the most likely reason the folder was refused and the next thing to do.

—

Most likely:

Do this next:

Read from the WordPress 7.1.2 source. It cannot see your server, so treat the answer as where to start, not as a diagnosis.

Could Not Create Directory on AHosting Servers

On our shared servers PHP runs as your own cPanel user, so WordPress writes to its own folders directly and needs no FTP details. We checked how often ownership goes wrong rather than assuming: a scan of all 530 docroots on one shared server found exactly two files owned by anyone other than the account, both one-off manual uploads. Each account’s temporary folder also sits inside its own quota, so the download and the unpack draw on the same allowance.

That is why, on our WordPress hosting plans and standard web hosting plans, the meters come first and the permissions second. If the folder is yours, the account has room and the install still fails, open a ticket with the full line, path included, and we will look at it with you.

A site that keeps running into its disk or file allowance has outgrown the plan rather than broken it. A VPS with full root access puts storage, ownership and quotas in your hands. One failed install is not a reason to move; a site that fills its allowance every few months might be.

A Practical Checklist for Could Not Create Directory

  • Write down the full message, and whether it came from an install or an update.
  • Get the path through Upload Plugin, or through WP_DEBUG and the browser console.
  • Note which step failed: unpacking into wp-content/upgrade, or installing into plugins or themes.
  • Read Disk Usage and File Usage in cPanel before touching any permissions.
  • Free space or files if either meter is near its limit, then retry.
  • Set wp-content and the folder in the path to 755, never 777.
  • Check that no file has taken the name of the folder in the path.
  • For the upgrade-temp-backup message, check the same meters and the Site Health result.
  • Turn WP_DEBUG off again when you are finished.
  • Contact your host only when the folder is yours, the meters have room and the error remains.

Frequently Asked Questions: Could Not Create Directory

What does Installation failed: Could not create directory mean in WordPress?

In other words, PHP asked the server for a new folder and the server refused. WordPress needs new folders twice during an install, once to unpack the zip under wp-content/upgrade and once to place the plugin or theme in its final folder. The message names neither the folder nor the reason. Get the path first, then check whether the account is out of space or files before you touch any permissions.

Which folder does WordPress fail to create when a plugin install fails in 2026?

Typically one of two. In WordPress 7.1.2 the unpack step creates a working folder under wp-content/upgrade and every folder inside the zip, and the install step creates the final folder under wp-content/plugins or wp-content/themes. The error carries the full path, but the Install Now button does not show it. Uploading the same zip from the Add New screen prints the path after the message.

Could not create directory vs Could not copy file: what is the difference in WordPress?

In practice they are the same kind of failure at different moments. While unzipping, WordPress creates every folder in the package first and only then writes the files. If a folder cannot be made you see Could not create directory, and if all the folders fit but a file cannot be written you see Could not copy file. On an account near its file ceiling, the folder step usually fails first.

Disk space vs inode limit: which one causes could not create directory on shared hosting?

Notably, either one can. A new folder needs one free file slot and a little space, and the Linux mkdir call fails when the user quota of disk blocks or of inodes is exhausted. Because a plugin unpacks into hundreds or thousands of files, an account that still has gigabytes free can run out of file slots partway through. Check both the Disk Usage and the File Usage figures in cPanel.

Why does could not create directory appear when cPanel shows free disk space?

Typically because the file count, not the space, is full. Every file and folder uses one inode, and hosting accounts cap how many they may hold. In addition, the clearer out of disk space message in WordPress is only checked during background updates, so an install you start by hand reports a full account as a folder it could not create. Clear old backups, caches or unused plugins, then retry.

Is chmod 777 on wp-content a safe fix for could not create directory?

Fortunately you never need it. Mode 777 lets every account and process on the server write into the folder, which is exactly what file permissions exist to prevent. When PHP runs as your own user, as it does on our shared servers, 755 on folders already lets WordPress create what it needs. If 755 does not work, the folder belongs to someone else or the account is full, and 777 fixes neither.

How do I see the full error path in WordPress 7.1 in 2026?

First and foremost, repeat the install through Plugins, Add New, Upload Plugin with the zip downloaded from the plugin page. That screen prints the message followed by the folder it failed on. Alternatively, set WP_DEBUG to true in wp-config.php, open the browser developer console and click Install Now again, because WordPress then writes the full messages, path included, to the console. Turn WP_DEBUG off afterward.

Does AHosting shared hosting let WordPress create plugin folders directly in 2026?

Indeed it does. On AHosting servers PHP runs as your own cPanel user, so WordPress writes to its own folders directly and needs no FTP details. In a scan of every docroot on one of our shared servers, only two files across 530 sites belonged to anyone else. That is why, on our servers, a full disk or file allowance is the first thing to check when a folder cannot be created.

Can AHosting support fix could not create directory on my WordPress site?

Above all, run the three checks in this guide first, because each one rules out a cause: get the full path, read both cPanel usage meters, and confirm the folder modes are 755. If the folder is yours, the account has room and the install still fails, open a ticket with the full line, path included, and we will look at it with you.

Do I need an AHosting VPS to stop WordPress plugin install errors in 2026?

Fortunately not for this error alone. The causes this guide covers, a full account and a changed folder mode, are both fixed inside the account. A VPS makes sense when a site keeps outgrowing its disk or file allowance, or when you need root access to manage ownership and quotas yourself.

Related posts:

AHosting card on the WordPress upload error missing a temporary folder, showing which layer produces each upload message.Missing a Temporary Folder: Why WP_TEMP_DIR Won’t Fix This WordPress Upload Error Security WordPress InstallationThe All-Inclusive Guide To Securing Your WordPress Installation Drupal LogoSix Tips For Optimizing Your Drupal Installation AHosting diagram of a not a valid JSON response error, showing what each status code on the failed save request reveals about which layer answered.Updating Failed: The Response Is Not a Valid JSON Response — Read the Response, Not the Checklist
«The Authorization Header Is Missing? What Site Health Tested, and the Fix
A Scheduled Event Has Failed? What Site Health Actually Checked»

Categories

  • CMS
  • Concrete5
  • Drupal
  • FFmpeg / Video Hosting
  • Hosting Guides
  • How To
  • Joomla
  • Security
  • SEO
  • Uncategorized
  • Video Content
  • Web Hosting News
  • WooCommerce
  • WordPress

Lets Connect!

  • X
  • Facebook
  • LinkedIn
  • Instagram
  • YouTube
  • Pinterest
Ahosting Logo

Hosting

  • WordPress Hosting
  • Web Hosting
  • FFmpeg Hosting
  • WooCommerce Hosting
  • Reseller Hosting
  • VPS Hosting
  • Dedicated Server

Domain

  • Register a Domain
  • Domain Transfer
  • Premium SSL Certificate

Support

  • Knowledge Base
  • Abuse Report
  • Submit A Ticket

Company

  • Compare Hosts
  • About Us
  • Datacenter
  • Contact Us
  • Blog
  • Sitemap

Legal

  • Privacy Policy
  • Terms of Service
  • Acceptable Use Policy
  • Service Level Agreement
  • Resource Abuse Policy
  • Hosting
    • WordPress Hosting
    • Web Hosting
    • FFMpeg Hosting
    • WooCommerce Hosting
    • Reseller Hosting
    • VPS Hosting
    • Dedicated Server
  • Domain
    • Register a Domain
    • Domain Transfer
    • Premium SSL Certificate
  • Support
    • Knowledge Base
    • Abuse Report
    • Submit A Ticket
  • Company
    • About Us
    • Datacenter
    • Contact Us
    • Blog
    • Sitemap
  • Legal
    • Privacy Policy
    • Terms of Service
    • Acceptable Use Policy
    • Service Level Agreement
    • Resource Abuse Policy

Copyright © 2026 All Rights Reserved

Ahosting, Inc. BBB Accredited Business, A+ rating
Facebook X/Twitter Instagram LinkedIn YouTube
WordPress hosting WP Bronze 5 sites · 10 GB $2.79/mo 36-month term · $100.44 today 36-mo · $100.44 · renews same Order now →

WordPress

WP Bronze $2.79/mo WP Silver $3.79/mo WP Gold $4.79/mo Compare WordPress

WooCommerce

WooStart $3.79/mo WooPower $16.79/mo Compare WooCommerce

FFmpeg

FFStart $16.79/mo FFPower $28.79/mo Compare FFmpeg

Web hosting

Bronze $2.79/mo Silver $3.79/mo Gold $4.79/mo Compare Web hosting
Order WP Bronze · $2.79/mo 36-mo