Skip to content

Troubleshooting

Start from what you are actually seeing. Every entry below is a symptom.

Find your symptom

What you seeWhere to go
domain is not registered to this account and is not a subdomain of a zone you ownA hostname is refused
domain already attached to another hosting siteA hostname is refused
site name already in useA hostname is refused
The site does not load, or the browser warns about the certificateNothing answers
www shows nothing, or the wrong sitewww does not work
redirect source domain is already used elsewherewww does not work
A setting was saved but nothing changedA change had no effect
An uploaded file still shows the old contentA change had no effect
Rewrites, redirects or headers from .htaccess are ignored.htaccess is ignored
An upload fails, or fails silentlyA large upload fails
The site becomes unreachable under loadThe site runs out of memory
SFTP times out, or a transfer stops part-waySFTP problems
a command is already running for this siteA command will not run
invalid working directoryA command will not run
mysql: not foundA command will not run
Invalid schedule, or the job never runsA cron job never runs
Maximum 5 cron jobs per site.A cron job never runs
Max 1 backup per hour, 3 per day.A backup will not start
The storage figure does not match realityThe storage figure looks wrong

A hostname is refused

text
domain is not registered to this account and is not a subdomain of a zone you own: shop.example.net

The hostname is not one we can attach. A site may only serve a domain that is on your account, or a subdomain of a zone your account owns. Add or transfer the domain first.

If the name is a subdomain of one of your zones, you are using the wrong field. Subdomains go under Additional hostnames, not the primary domain list, and the message says so:

text
... shop.example.com is a subdomain — add it as an additional hostname instead
text
domain already attached to another hosting site

The domain is serving a different site in your account. Remove it there first.

text
site name already in use

Site names are unique across all customers, not just your account. Pick another; the name is internal and visitors never see it.

Nothing answers, or the certificate is wrong

Check what the name resolves to before anything else:

bash
dig +short A example.com
dig +short AAAA example.com

Both must come back as 91.98.6.3 and 2a01:4f8:1c1f:7bfa::1. Nothing points your domain here automatically, so on a new site the usual answer is that the records were never set. See Domains, DNS and HTTPS.

If only the A record is right, visitors on IPv6 get nothing while you, on IPv4, see a working site. Set both records.

A certificate warning right after the records are correct is expected. The certificate is issued by checking the hostname over HTTP, so it cannot exist before the name resolves here. Allow up to an hour after propagation.

If the name resolves correctly and you get a placeholder page reading Your site is ready, everything works and the document root is empty. Upload your files.

www does not work

www.example.com is a separate hostname. Adding example.com does nothing for it, in either DNS or the site.

  1. Give www.example.com its own A and AAAA records, same two addresses.
  2. Then either add it under Additional hostnames to serve the same files, or add a redirect from it to the bare domain.
text
redirect source domain is already used elsewhere: www.example.com is also a primary domain on this site

You have done both. A hostname either serves the site or redirects, never both. Remove it from the hostname list, or drop the redirect.

A change had no effect

PHP settings. After the first time you save the PHP Settings card, later changes to it are stored but do not reach PHP until the site restarts. Use Restart site under Actions, then confirm from the console:

bash
php -i | grep memory_limit

An uploaded file. Compiled PHP is cached and rechecked once a minute, so a change can take up to 60 seconds to appear. If it has been longer, you uploaded into the wrong directory: only public_html is served, and if the site has a document root subdirectory set, only that subdirectory of it.

Runtime or web server. Those apply immediately, over a few seconds of replacement. If the PHP version did not change, check you pressed Save on the Settings card rather than only picking from the dropdown.

.htaccess is ignored

nginx does not read .htaccess. Nothing errors, nothing is logged, and the file is simply not consulted. This is the most common surprise when moving a site from another host.

Set the web server to Apache on the Settings tab if the application really needs it. If all you need is pretty URLs, nginx already sends unknown paths to index.php and no configuration is required.

Remember that on Apache the dotfile protection is gone too: block .env, .git/ and similar yourself in the .htaccess you are now using.

A large upload fails

Three different limits, three different symptoms.

  • The request is rejected before PHP sees it, with a 413. Raise Max upload size on the Settings card; the limit in front of the site follows it automatically. The ceiling is 512 MiB.
  • The upload disappears with no error. Max POST size is smaller than Max upload size. PHP drops the file and reports nothing. Set POST size at least as high as upload size.
  • The upload runs and then times out. On nginx a request is cut at 300 seconds regardless of Max execution time, so importing a large archive through the browser will not work. Upload it over SFTP and unpack it from the console instead.

On a Static site the limit is fixed at 8 MiB and cannot be raised.

The site runs out of memory

Symptoms: the site is fine at low traffic and becomes unreachable under load, or requests that were working start failing together.

Memory limit is per request, but the whole site shares 512 MiB across up to 15 parallel PHP requests. 512M therefore does not make one request bigger, it removes PHP's own brake and lets a few requests exhaust the site. Set it back to 256M or lower and find the request that actually needs more.

SFTP problems

Check the port first. It is 2222, not 22. Port 22 on this host answers with a different service, so leaving the default gives you a host-key warning or a rejected login, never a message about the port. If your password is refused, check the port before you check the password.

The password is rejected. The password is shown once, when you set it. If you did not save it, use Reset password for a new one. There is no public key authentication, so a client configured to offer a key and nothing else will never get in.

A transfer stops part-way. The SFTP endpoint restarts briefly whenever credentials change anywhere, dropping open connections. Use a client that resumes, and verify the transfer completed rather than assuming.

ssh gives you nothing. The account has no shell by design. Use the console for commands.

A command will not run

text
a command is already running for this site

One command per site at a time. Wait for it, or press Stop.

text
invalid working directory: working_dir must be /app/public_html or a subdirectory

The working directory has to be /app/public_html or something below it. That path is the same place as public_html over SFTP.

text
mysql: not found

The MariaDB command line clients are not installed. Anything shelling out to them fails, including wp db export and wp db import. Use a backup for dumps and your framework's own tooling for queries.

A command is stopped after 10 minutes. Work that takes longer belongs in a cron job, which can run for up to 3600 seconds.

A cron job never runs

text
Invalid schedule

Five fields, minute hour day-of-month month day-of-week. Six-field expressions with seconds are rejected, and so are @daily, @hourly and the rest.

It runs, but at the wrong time. Schedules are UTC. 0 3 * * * fires at 03:00 UTC, which is 04:00 or 05:00 in Germany depending on the season. The site's PHP timezone does not change this.

It ran once and never again. A failed run is not retried, and with the default overlap policy a run starting while the previous one is still going is skipped rather than queued. Check Runs, and give a long-running job a higher timeout instead of letting it collide with itself.

The output is gone. Run history is 3 successful and 3 failed runs, kept for 24 hours. Write anything you need to keep to a file.

text
Maximum 5 cron jobs per site.
Maximum 30 cron jobs per account reached.

Combine steps into one command, or remove a job you no longer need.

A backup will not start

text
Max 1 backup per hour, 3 per day.

Both limits apply per site. Wait out the window.

text
maximum backups reached

Five live backups already exist. The oldest expires 72 hours after it was made; delete or download one if you cannot wait.

A backup finished but part of it is missing. Files and databases are made independently and a backup is marked complete even when one part failed. Check both sizes on the row and take another one.

A restore did not bring the files back. Restore covers the database only. Download the file archive and unpack it over SFTP.

The storage figure looks wrong

Usage is measured once an hour, not continuously. After deleting a large amount of data the number stays where it was until the next measurement. Do not delete more on the assumption that the first deletion failed.

Going over the package size does not block anything. Writes keep working and the excess is billed; see Web Hosting.

What's next