More fixes

A WordPress plugin or theme won't install or update

You click Install or Update and WordPress answers with a short line: "Destination folder already exists", "Could not create directory", "Another update is currently in progress", a form asking for FTP details, or "The package could not be installed". Each line points at one cause, and none of them means your site's content is in danger: posts, pages and settings live in the database, not in the plugin's folder. Below is a rebuilt example (not a real client), then what each message means and the fix for it.

What the owner sees in Plugins, Add New, Upload

petalandstem.example/wp-admin/update.php?action=upload-plugin

What the checks found


  

First, two minutes of checks

  1. Copy the exact message, including any folder path it prints. The table below is sorted by that wording.
  2. Look at Plugins (or Appearance, Themes). Is the plugin still listed? A plugin that vanished from the list after a failed update, often with "has been deactivated due to an error: Plugin file does not exist", left a half-copied folder behind.
  3. Check the disk space in the host's control panel. A full hosting account produces "Could not create directory" and "Could not copy file" with nothing else wrong.
  4. Wait 15 minutes if the message is "Another update is currently in progress" and nobody else is updating. That lock clears itself.

The fixes

  1. "Destination folder already exists." WordPress will not copy a plugin or theme over a folder of the same name. If the plugin is listed and working, you are installing a newer copy by upload: recent WordPress versions show "Replace current with uploaded" after the upload, so use that. If it is not listed, the folder is a leftover from a failed install or update. In the host's file manager, open wp-content/plugins/ (themes: wp-content/themes/), rename the folder named in the message, say booking-pro to booking-pro-old, then install again. Its settings come back on activation because they were in the database all along. Delete the -old folder once everything works.
  2. "Could not create directory." or "Could not copy file." or "Could not remove the old plugin." WordPress cannot write to its own folders. In order of likelihood: the hosting account is out of disk space or file count (clear old backups, which are often the culprit); folder permissions are wrong (folders are normally 755 and files 644); or the files belong to a different system user than the one the site runs as, common after a move or after files were uploaded by another account. Permissions you can set in the file manager; ownership the host fixes in a minute if you ask for it in those words. The folder wp-content/upgrade must be writable too, since every update unpacks there first.
  3. A form asking for "Connection Information" or FTP credentials. This is the same ownership problem as fix 2, seen from the other side: WordPress checks whether it can write files as itself, and when it cannot, it asks for FTP details instead. The lasting fix is correct ownership (ask the host). Adding define('FS_METHOD', 'direct'); to wp-config.php only hides the form; if the ownership is still wrong, the next install fails with "Could not create directory" instead.
  4. "Another update is currently in progress." A core update leaves a lock while it runs, stored in the options table as a row named core_updater.lock, and it expires after 15 minutes. If an update was interrupted (a closed tab, a timeout) and you cannot wait, take a database backup and delete that one row in phpMyAdmin, or run wp option delete core_updater.lock if the host has WP-CLI. Then run the update once, and let it finish.
  5. "The package could not be installed. No valid plugins were found." (themes: "...The theme is missing the style.css stylesheet.") The zip you uploaded is not the plugin itself. Paid plugins and themes from marketplaces often arrive as a bundle with documentation, licences and the real zip inside. Unzip it on your computer, find the inner zip named after the product, and upload that one. A theme uploaded under Plugins (or the reverse) gives the same message.
  6. "Download failed." with "cURL error 28" or "Could not resolve host". Your server could not reach the download address in time. Tools, Site Health shows whether it can reach WordPress.org at all. A one-off timeout passes on the next try; a repeating one is the host's firewall or DNS, which only the host can change. A paid plugin with no licence key entered, or an expired one, usually also fails at the download step; the vendor's message varies, and the fix is the key in that plugin's own settings page.
  7. "Update failed" on a big plugin or theme you upload by hand, with "exceeds the upload_max_filesize directive" or "The link you followed has expired": the zip is larger than the host allows. That has its own guide: "The link you followed has expired".
  8. Test: the plugin is listed and active, its settings screen opens with your settings in it, the page that uses it (bookings, forms, shop) works from a private window, and Plugins shows no update stuck half-way.

What you see, what it means, what it needs

What you seeUsual causeUsual fix
"Destination folder already exists."A folder of that name is already there: a working copy, or a leftover from a failed install"Replace current with uploaded", or rename the leftover folder and install again
Plugin vanished, "Plugin file does not exist"An update stopped half-way and left a partial folderRename the folder, install a fresh copy, activate
"Could not create directory." / "Could not copy file."Disk full, wrong permissions, or wrong file ownerFree space, 755/644, ask the host to fix ownership
A form asking for FTP detailsWordPress cannot write files as itselfCorrect ownership; FS_METHOD alone only hides it
"Another update is currently in progress."Core update lock, set by a running or interrupted updateWait 15 minutes, or delete the core_updater.lock row after a backup
"No valid plugins were found." / "missing the style.css stylesheet"Uploaded a bundle zip, or a theme as a pluginUpload the inner product zip in the right screen
"Download failed." cURL error 28 or 6Server cannot reach the download addressRetry once; repeating = host firewall or DNS
"exceeds the upload_max_filesize directive"Zip larger than the host's upload limitRaise the limit or install through the file manager

What not to do

Most of these take minutes once the message is read correctly; ownership needs one message to the host. If you would rather hand it over, that is what the box below is for. Related: a plugin that breaks the site after it installs, "Briefly unavailable for scheduled maintenance" and "There has been a critical error".