Troubleshooting
Do this first
Whatever the problem, read runtime.log in the site root.
That means the runtime.log in the root, not the one under runtime/log/. The real cause of almost every problem is written there.
With
DEBUG=false, any uncaught exception is rendered as the 404 page and returned with HTTP 500 — the page gives you nothing. The real cause exists only inruntime.log.
Installation and access
Only the home page loads; every link 404s URL rewriting is not configured. See rewrite rules.
Blank page / 500 Usually a missing bcmath extension. Every money calculation depends on it, and without it the program throws a fatal error. See installation overview.
The installer says a directory is not writableconfig, runtime, kernel/Install and assets/cache must be writable. In BaoTa, set the site directory owner to www.
The Docker container is running but the browser cannot connect The port mapping is reversed. In -p 8080:80 the left side is the host port; the right side is always 80. On a cloud server, also open the port in the security group.
Data disappeared after a Docker upgrade-v acg_data:/data was missing. See Docker installation.
After migrating
If the site does not work on the new server, check in order:
config/database.php— still pointing at the old database?- If the old site used Redis for sessions, install it here too or switch PHP's session storage back to files
- Are all PHP extensions installed — especially
bcmath? - Directory permissions and URL rewriting both need configuring again
Orders and payments
A buyer paid but received nothing
- Search Orders by order number or contact and confirm the order exists
- Check its state — still "Unpaid" means the payment callback never arrived
- Callbacks usually fail because the callback URL at the provider is wrong, or a CDN firewall is blocking it
- For CDN problems, use a custom payment callback domain — see site settings
Stock clearly exists but the storefront says sold out When a product has variants or SKUs, stock is counted per combination. One combination with no keys is sold out even if the total looks healthy. Keys may also be locked. See card keys and stock.
The buyer chose yearly and got a monthly key The keys were imported under the wrong variant.
A product shows as costing 0 If the member price is left blank, logged-in users may be able to take it for free. Fill both prices in. See payment setup.
Sub-stores
Subdomain will not load Three things are needed, all of them: main domain and DNS CNAME configured in the panel, a * wildcard record at your DNS provider, and *.your-domain bound on the server. The last one is the one people miss.
Custom domain will not load No default site is configured on the server. See sub-stores.
Store sharing
Adding the store fails Wrong address, merchant ID or key — or sharing is not enabled on their side.
Customer orders error out and nothing is delivered Your balance upstream has run out. Shared orders are paid from your balance on the upstream store.
The product list comes back empty Their products do not have "API access" enabled.
Plugins and themes
Installed a plugin and nothing happened You still have to enable it under Plugins.
Added a new hook file and it does not fire The hook registry is a compiled cache. Disable and re-enable the plugin to rebuild it.
The site renders incorrectly after switching themes Clear the template cache by deleting the contents of runtime/view/compile.
Never delete
runtime/config— that is the configuration cache and removing it breaks the site.
How to ask for help
Nobody can diagnose your problem from a one-line description. Before asking, have these ready:
- The contents of
runtime.log— it is in the site root after any error - What you did immediately before the problem appeared
- Screenshots of anything relevant
Preparing these is the fastest route to an answer. You can of course describe the problem in a sentence and hope someone helps, but it will not save you time — it just turns into a long back-and-forth.
Where to ask
- Telegram: https://t.me/mcyofficial
