iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Antihost offers managed WordPress hosting with free migration, one-click staging and a 14-day free trial.
WordPress shows “Installation failed: Could not create directory” when its installer cannot create a folder while unpacking or copying a plugin, theme, or WordPress package. Start with the complete path in the error: a path below wp-content/plugins or wp-content/themes identifies the destination that failed, while wp-content/upgrade usually indicates temporary files used during an update. Then check effective write access, ownership, the upgrade directory, server restrictions, and—if necessary—the filesystem credentials WordPress is requesting.
What the error means
The message is not a diagnosis of one specific permission number. WordPress uses its Filesystem Abstraction while installing or updating files. During that process, the copy_dir() routine eventually calls mkdir(). If the operating system or hosting environment refuses that directory-creation call, WordPress returns the Could not create directory error. The WP_Upgrader reference also reports separate failures for an inaccessible root, wp-content, plugins, themes, or upgrade directory.
That distinction matters because the sentence is generic but the path is specific. Read the entire path shown in the error before changing anything. It tells you which directory WordPress was trying to use and whether the failed operation was a destination install or temporary extraction.
Use the failing path to choose your first check
| Path shown in the error | What it usually represents | First checks |
|---|---|---|
wp-content/plugins/… |
The destination for a plugin package. | Check that wp-content and wp-content/plugins can be traversed and written by the account handling the web request. |
wp-content/themes/… |
The destination for a theme package. | Check wp-content and wp-content/themes, including their ownership and any host policy that prevents PHP from creating folders. |
wp-content/upgrade/… |
Temporary extraction or staging during an update. | Confirm that wp-content/upgrade exists or can be created, is writable by the web-server process, and is not blocked by a quota or security rule. |
A root, wp-content, or another installer path |
WordPress cannot reach or write to a parent directory. | Check traversal, ownership, filesystem access, and the server error log before changing a child directory. |
A directory can look writable in a control panel and still fail for the PHP or web-server user that actually performs the request. Numeric permissions are only one part of the decision; ownership, filesystem restrictions, quotas, and security modules can override them.
#1 Best Overall
Before changing permissions, protect the site
- Take a current database and file backup, or confirm that your host’s backup can restore the site.
- Record the exact path, the action that triggered the error, and the time it occurred. This information helps match the failure with server-log entries.
- Do not delete an existing plugin, theme, or upgrade directory simply because an install failed. A partial update may need to be restored or completed carefully.
- Make one controlled change at a time. Changing several directories or ownership settings at once makes it harder to identify the cause and can broaden access unnecessarily.
Check effective write access and ownership
Inspect the parent directories
Use your host’s file manager, SFTP client, or another documented administration method to inspect wp-content and the specific subdirectory named in the error. The account running PHP must be able to traverse each parent directory and create a folder and files in the destination. A child folder cannot be used if a parent blocks traversal.
WordPress.org support guidance associates this error with server folder permissions and recommends checking wp-content and its subfolders. That is a useful starting point, but do not assume that changing a displayed mode value alone resolves the problem.
Verify the owner seen by the web request
Ownership determines which account is allowed to write when the host separates the site owner from the web-server or PHP worker account. If files were copied by a different administrative account, the directory may be readable in a control panel yet unwritable during an update. Ask the host which user runs PHP for this site and whether that user can create directories in the failing path.
Correct the narrowest scope
Apply a documented ownership or permission correction to the affected directory and its required parents rather than opening the entire site. Your host may provide a “reset permissions” or ownership repair tool; follow its instructions and ask what it changes before running it. Avoid granting broad, permanent write access as a substitute for identifying the correct owner.
Repair a missing or blocked wp-content/upgrade directory
When the path is under wp-content/upgrade, the failure often occurs before WordPress copies files into their final plugin, theme, or core location. Verify all of the following:
- The
upgradedirectory exists, or the PHP/web-server process is allowed to create it. - The process can write temporary files and create subdirectories inside it.
- The directory has enough available quota and storage for the package and its extracted files.
- A host security rule, isolation policy, or filesystem restriction is not denying creation in that location.
A support case documented failures that continued after permission and ownership changes. That is why a persistent wp-content/upgrade error should be treated as a possible host-side restriction, not automatically as proof that another permission change is needed.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallRank #3
Use logs to reveal the underlying filesystem error
If the basic access check passes, reproduce the failure once while collecting diagnostics. WordPress support guidance recommends checking the server error log and temporarily enabling WP_DEBUG and WP_DEBUG_LOG. After the failed install, review wp-content/debug.log for the accompanying filesystem message.
- Use your host’s documented method to enable WordPress debugging temporarily, with logging enabled.
- Retry the same installation or update so the log entry corresponds to the path you recorded.
- Inspect both the hosting/server error log and
wp-content/debug.log. Look for an operating-system error, denied path, quota message, or security-module event rather than relying only on the dashboard sentence. - Save the relevant timestamp and error text for your host, then disable debugging or protect and remove logs according to your host’s guidance. Debug logs can expose paths and other operational details.
Log evidence helps distinguish a simple destination-access problem from a policy denial. For example, a “permission denied” event after an ownership repair points toward the executing user or a security rule, while a quota or storage message requires a resource correction instead.
Understand why WordPress asks for FTP credentials
WordPress may not be able to use direct filesystem access from PHP. The WordPress Developer Resources copy_dir() reference notes: “Unable to connect to the filesystem, FTP credentials may be required or something.” When direct access is unavailable, WordPress presents a credentials form so it can use the host’s file-transfer method instead.
Rank #4
Enter credentials safely
- Enter credentials only in the WordPress prompt or through the host’s documented configuration method.
- Use the protocol and port supplied by your host. If the host requires SFTP, prefer SFTP rather than unencrypted FTP.
- Confirm that the account has access to the site’s actual document root and can create directories in the failing path.
- Do not paste credentials into theme or plugin files, support forums, tickets that are not secured, or arbitrary scripts.
A successful login does not guarantee a successful install. The transfer account still needs permission to reach the destination and enough quota to unpack the package. Conversely, repeatedly entering credentials will not fix a host policy that blocks directory creation after authentication.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Scan for outdated or missing drivers - takes under a minute3Clear out junk files and repair common Windows errorsMatch the fix to the operation that failed
| Operation | What to compare | Useful interpretation |
|---|---|---|
| Plugin installation or update | Whether the path ends below wp-content/plugins or first fails in wp-content/upgrade. |
A plugin destination points to access for the plugins directory; an upgrade path points first to temporary extraction. |
| Theme installation or update | Whether the destination is below wp-content/themes. |
Check the themes directory and its parents, then compare the result with the server log. |
| WordPress core update | Whether temporary staging under wp-content/upgrade fails before the core files are replaced. |
Check upgrade-directory access, quota, and host restrictions before attempting another update. |
| Media or another file operation | The complete path and the process handling that request. | Use the path to identify the destination; do not assume a plugin-directory fix applies to a different operation. |
If only one type of operation fails, compare its destination with an operation that succeeds. A plugin failure with successful media uploads suggests a directory-specific or package path issue; failures across unrelated operations suggest a broader filesystem, ownership, credential, or host-policy problem.
When a host restriction is the real cause
Escalate when the directory is writable in the control panel, the owner appears correct, and the same error persists. Ask hosting support to inspect:
Best Value
- Which PHP or web-server user handled the failed request.
- Ownership and access-control settings on the site root,
wp-content, and the failing subdirectory. - Account quotas, available storage, and temporary-file limits.
open_basediror equivalent path restrictions.- Security modules, malware scanners, isolation rules, or other policies that can deny
mkdir()or file extraction. - Filesystem and web-server logs at the timestamp of the failure.
Send the exact path and the complete log message. “Please fix permissions” is less useful than asking whether the PHP user, quota, path restriction, or security module rejected the directory-creation request.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Use manual SFTP or FTP upload only as a controlled fallback
Manual upload can bypass the dashboard installer when WordPress cannot complete its filesystem connection. WordPress.org support discussions document uploading a downloaded plugin or theme through FTP/SFTP as a fallback. It does not remove the need for correct ownership or a compatible package.
Recommended Free Tools
- Obtain the package from its legitimate publisher or the source you normally trust, and verify what you downloaded before transferring it.
- Confirm whether the package is a plugin or theme so it goes into the corresponding directory under
wp-content. - Transfer the package using the host-approved FTP or, preferably when required, SFTP account.
- Extract it into the correct destination, preserving the package’s directory structure. Do not leave an extra archive layer if WordPress expects the plugin or theme files directly inside its folder.
- Check the resulting owner and access settings, then activate or update it from the WordPress dashboard only after confirming the files are complete.
If the host blocks directory creation generally, manual transfer may fail too. Treat it as a workaround for an installer connection problem, not as a substitute for resolving a quota, ownership, or security restriction.
Quick Recap
Common mistakes that make the error worse
- Changing only the number shown for permissions: ownership or a host policy can still deny the PHP process.
- Fixing the wrong directory: a themes-directory repair will not resolve a failure in
wp-content/upgrade. - Deleting
upgradewithout checking the update state: remove or recreate temporary files only when you understand whether an interrupted update left work behind. - Leaving debugging enabled: turn off temporary logging or protect the log after diagnosis.
- Repeating a credential prompt blindly: credentials cannot overcome a denied path, unavailable quota, or blocked filesystem method.
- Uploading an unverified package: manual installation should use a trusted package and the correct destination.
A practical decision sequence
- Capture the full error path. Identify whether it is under plugins, themes, upgrade, or another destination.
- Check the parent chain. Confirm that the PHP/web-server process can traverse the root,
wp-content, and the named subdirectory. - Check effective ownership and write access. Compare the directory owner with the user that runs PHP, not just the account displayed in a control panel.
- Check resources and policy. Verify the upgrade directory, quota, storage, path restrictions, and security rules.
- Read logs. Temporarily use
WP_DEBUG_LOGand inspect the server log andwp-content/debug.logafter one reproduction. - Resolve filesystem authentication. If WordPress cannot use direct access, provide valid host-approved FTP/SFTP credentials through the proper prompt or configuration method.
- Escalate with evidence. Give the host the path, timestamp, operation, and exact log entry, and ask it to inspect the PHP user and server policy.
- Use manual transfer only if appropriate. Upload and extract a verified package into the correct directory, then recheck ownership and activation.
What to remember
- The sentence means a directory-creation call failed; the complete path identifies the useful next step.
wp-content, its plugins and themes directories, andwp-content/upgrademust be reachable and writable by the process performing the operation.- Ownership and hosting policy can matter even when numeric permissions look correct.
- Server logs and temporary WordPress debug logging can expose the underlying filesystem error.
- FTP or SFTP credentials may be required when direct filesystem access is unavailable.
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.

