A 500 Internal Server Error means the web server started the request and then PHP, a config file, or a missing resource stopped it. The site files are usually still on the account. This is not a DNS miss and it is not a problem in the visitor's browser.
This article is for Beginner and Standard shared hosting (cPanel) in Australia. Open cPanel from the portal. Do not guess a hostname.
On a VPS you read the logs and restart services yourself. Credentials and the console are on that server in the portal. See the VPS section below.
On a dedicated server, open a support ticket and we will walk you through access.
The name does not resolve at all? Start with My website is down - what to check first.
The site is WordPress and you get a blank white page (or a 500 with no useful text)? Use Fix the WordPress White Screen of Death / HTTP 500. Stay here for a non-WordPress 500, or when you only have the HTTP code.
A step is unclear, or you would rather we read the log? Open a support ticket and we will help. We keep hourly backups of the account if you need a file put back. See Download and Restore a Backup.
Open cPanel
- Sign in at the portal.
- Open the hosting service for the site.
- Click Log in to cPanel.
You do not need a server hostname to get in.
Use the File Manager for the file steps below. Turn on Show Hidden Files (dotfiles) under Settings. For a large folder, use FTP.
The document root is public_html for the main domain, or the addon / subdomain folder for that name.
Read the error first
The HTTP code alone does not tell you what broke. The log does.
- In the Metrics section, open Errors.
- Read the lines that match the time you hit the 500.
- In File Manager, also look for a file named
error_login that site's document root.
Note the file name, the line number, and the newest message. That is the starting point.
| What you see | What to do |
|---|---|
Parse error or syntax error | Restore or undo the named file. If you just edited it, put the previous copy back from Trash or from an hourly backup. |
Call to undefined function or a missing class | Turn on the matching PHP extension, or put the PHP version back. See Choose your PHP version. |
Allowed memory size | Raise memory_limit in Select PHP Version. |
Permission denied | Fix file and folder permissions (steps below). |
.htaccess or RewriteEngine / RewriteRule | Test .htaccess (steps below). |
A plugin, theme, or wp- path | Switch to the WordPress 500 article. |
| Cannot connect to the database | Check the database values (steps below), or Fix "Error Establishing a Database Connection" in WordPress. |
| A PHP crash, or a line you do not recognise | Open a support ticket and paste that line (not a screenshot of the whole account). |
A branded 500 page you set in Error Pages does not fix the cause. See Set up custom error pages after the site answers again.
Test .htaccess
A typo in .htaccess is one of the most common reasons the whole site returns 500.
- In File Manager, turn on Show Hidden Files (dotfiles).
- Open the site's document root.
- Rename
.htaccessto.htaccess-disabled(orhtaccess.bak). - Reload the site in a private window.
If the site loads, the old file is the problem.
- Open
.htaccess-disabledand look for a missing</IfModule>, a misspelt directive, or aRewriteRuleyou added just before the 500. - Remove the last change, or delete the PHP handler lines (
AddHandler,AddType,suPHP_ConfigPath). Those can pin an old PHP version and ignore Select PHP Version. - Rename the file back to
.htaccessonce it is clean, or leave it disabled and open a support ticket. We can put a correct file back from an hourly copy.
If the site still returns 500 with .htaccess renamed, rename it back and keep going.
On WordPress, once wp-admin loads, open Settings → Permalinks and click Save Changes with no edits. WordPress writes a fresh .htaccess.
File and folder permissions
The web server must be able to read the site. Folders that are too tight, or files left world-writable, both cause trouble.
- In File Manager, open the document root.
- Select a folder, click Permissions (or right-click → Change Permissions), and set it to
755. - Select a file and set it to
644. - Repeat for
index.php/index.htmland any folder you just uploaded.
Usual values on this hosting:
- Folders:
755 - Files:
644
Do not set 777. That lets a visitor write PHP into the site. See Keep your website secure.
If a script still cannot write after 755 / 644, open a support ticket rather than opening the permissions further.
A bulk FTP upload can leave files at 600 or folders at 644. If the 500 started right after an upload, check those items first.
PHP version, extensions, and limits
Most sites on this hosting run PHP, including WordPress. A version switch, a missing extension, or a low memory ceiling often shows up as 500.
- In the Software section, open Select PHP Version (some themes label it PHP Selector).
- Note the version marked as current. For a site that is up to date, use the newest 8.x in the list.
- Under Extensions, confirm the site has what it needs. Common ones are
mysqli,pdo_mysql,gd,mbstring,curl,zip,intl, andopcache. - Open Options (or Switch to PHP Options).
- If the log mentioned memory or a long script, raise
memory_limitto256M(or512Mif it still complains) and raisemax_execution_timeif the page is a genuine long job. - Save.
If you set the version in MultiPHP Manager, use MultiPHP INI Editor for those same options.
Do not upload a custom php.ini into public_html unless we have asked you to. The selector is the supported path.
If the 500 started the moment you switched PHP, put the previous version back so visitors see the site, then update the app before you try the new version again.
Step-by-step: Choose your PHP version. If the version you need is not in the list, open a support ticket.
Recent files, plugins, and code
If the 500 started after an upload, an edit, or an installer run, undo that change first.
- In File Manager, restore the file you just changed from Trash, or download the hourly copy (see Download and Restore a Backup).
- For WordPress, prefer WordPress Toolkit or Installatron to turn plugins off. Do not start by downloading a zip from wordpress.org. See Install WordPress and the WordPress 500 article.
- For a custom app, rename the folder you just added so it does not load, then reload the site.
Check Errors again after each change. When the message disappears, you found the cause.
If core files look half-written after an update, open a support ticket and ask us to restore that folder from the hourly copy from before the update.
Database connection
A site that uses MariaDB can return 500 when PHP dies on a failed query, or it can show a database error page instead. cPanel still labels the tools MySQL. The engine is MariaDB. Sites on this account connect with host localhost.
- In the Databases section, open MySQL Databases.
- Confirm the database and user still exist. Names are prefixed with the cPanel username (
username_shop, notshop). - Confirm the user is still attached to that database.
- Open the site's config file in File Manager (
wp-config.phpfor WordPress, or the app's database config). - Match name, user, password, and host to what MySQL Databases shows. Host must be
localhost.
Do not put the website domain in the host field. That sends the connection away from this account.
Open phpMyAdmin if you need to confirm the database opens. Need the database itself first? Create a MySQL database and user.
WordPress-specific connection copy: Fix "Error Establishing a Database Connection" in WordPress.
Disk space and resource limits
If the account is out of disk, at the file (inode) limit, or pinned on CPU or memory, PHP can stop mid-request and the visitor sees 500.
- Check Disk Usage on the cPanel Statistics sidebar, then see Check Disk Usage.
- Remove leftover zips, old installer archives, and unused media. Hourly copies we keep do not count toward this quota. Copies you left on the account do.
- Open Resource Usage under Metrics. See Read your resource usage and metrics.
- If a graph is pinned at the ceiling, the site may need a quieter plugin set, a cache pass, or a larger plan. Open a support ticket and we will look at it with you. Cards are on /hosting/browse.
A looping cron job can fill CPU or entry processes. Turn off a job you do not need, then reload the site.
You do not restart Apache or PHP on shared hosting. There is no shell restart for this account. If the log is clean, disk has room, and the site is still 500, open a support ticket and we will check the service from our side.
On a VPS
The cPanel steps above do not apply. You have root. Credentials and the console are on that server in the portal.
- Sign in at the portal, open the VPS, and copy the IP and login.
- Connect with SSH. See Connect to your VPS via SSH from Windows or from macOS or Linux.
- Read the web server error log. Apache is often
/var/log/apache2/error.log. Nginx is often/var/log/nginx/error.log. Also check anyerror_login the site document root. - Check the site vhost (Apache or Nginx) and
.htaccessif you use Apache. - Confirm PHP and the extensions the app needs. See Install PHP and Common Extensions.
After you have the log line, you can restart the stack on that server. Typical Ubuntu service names:
sudo systemctl restart apache2
or nginx and php8.3-fpm if that is what you installed. Use systemctl status first so you restart the unit that is actually running.
Do not run those commands against a shared hosting account.
Watch CPU, disk, and memory on the VPS itself: Monitor Server Resources.
If you want us to read the log with you, open a support ticket. Tell us the domain, whether the site is Apache or Nginx, and paste the newest error line.
Quick order to try
- Open Errors (and
error_login the document root) and copy the newest line. - Rename
.htaccessand reload. - Confirm folders are
755and files are644. - Check Select PHP Version, extensions, and
memory_limit. - Undo the last upload, plugin, or edit.
- Match the database name, user, password, and
localhost. - Check disk and Resource Usage.
- Open a support ticket if it is still 500.
If you want us to take it
Open a support ticket and include:
- The exact URL that returns 500
- When it started
- Any recent change (plugin, upload, PHP version,
.htaccess, migration) - The newest line from Errors or
error_log(paste the text) - What you already tried
Most 500s end at .htaccess, a PHP parse error, permissions, or a plugin. The log is the shortest path.
Related
- My website is down - what to check first
- Fix the WordPress White Screen of Death / HTTP 500
- Fix "Error Establishing a Database Connection" in WordPress
- Use the File Manager
- Choose your PHP version
- Create an FTP Account and Connect
- Download and Restore a Backup
- Manage a Database with phpMyAdmin
- Create a MySQL Database and User
- Read your resource usage and metrics
- Check Disk Usage
- Set up custom error pages
- Set up a cron job
- Keep your website secure
- Install PHP and Common Extensions
- Monitor Server Resources