# Troubleshoot a PHP site

> Diagnose DNS, provisioning, file, PHP, database, and HTTPS problems in a reliable order.

Test one layer at a time. Changing DNS, files, PHP settings, and database credentials together makes the original problem harder to identify.

## Site is still provisioning

Wait for the current operation to finish and refresh the service. If the service reports that its node is offline, actions requiring the node will remain unavailable. Do not create a duplicate site. If the state does not change after a reasonable wait, open support with the service name and approximate start time.

## Domain does not open

1. Confirm the domain is listed under **Domains**.
2. For an external domain, confirm ownership is verified.
3. Open the PHP site creation or alias flow and copy the exact A record shown there.
4. Remove conflicting A or AAAA records for the same hostname.
5. Set Cloudflare to **DNS only** during verification.
6. Wait for public DNS propagation, then click **Verify DNS** or **Link** again.

See [Troubleshoot domains and DNS](/domains/troubleshooting/) for detailed record checks.

## Default page appears instead of the application

Open **Overview → Site Configuration** and copy the document root. In **Files**, confirm your application's `index.php` is in that exact directory and has replaced the default entry file. Check that an extracted archive did not create an extra top-level folder.

## Blank page or server error

Open **Logs**, reproduce the error once, and read the newest entry. Check PHP syntax, required extensions, file paths, environment configuration, and write permissions. Avoid exposing PHP errors or a `phpinfo()` page publicly after diagnosis.

## Database connection fails

Open **Database → Connection**, then verify:

1. Hosted PHP uses the internal host and port, normally `mysql:3306`.
2. The exact prefixed database name is used.
3. The username and current password match **Users**.
4. The user is assigned to the database.
5. **Privileges** contains the operations the application needs.
6. External clients use the external host and port and an allowed source host.

Use [Create and manage MySQL databases](/php-mysql/databases/) for the full connection process.

## HTTPS certificate is pending

DNS must point directly to the address AppLaunch supplied before certificate activation. Disable an upstream proxy temporarily, remove conflicting records, wait for DNS caches to update, and run the verification action again.

## Get help

Create a [support ticket](https://applaunch.org/dashboard/support) with the service and site names, hostname, exact action, visible error, and approximate UTC time. Include relevant log lines after removing credentials and personal data.
