Troubleshooting
Fixes for the most common problems - 500 errors, missing images, 404s, e-mails, payments, slow pages and lock-outs.
First: look at the log#
Most problems explain themselves in storage/logs/laravel.log (or Admin > System > Logs). Payment problems are also in storage/logs/payments-*.log. Quote the last error when you ask for support.
The site shows "500 Server Error" or a blank page#
| Check | How |
|---|---|
| PHP version | Must be 8.3 or newer for this domain. |
| PHP extensions | bcmath, ctype, curl, dom, fileinfo, gd, json, mbstring, openssl, pdo_mysql, tokenizer, xml, zip. |
| Hidden files | .htaccess (and public/.htaccess) must be uploaded. |
| Permissions | storage, bootstrap/cache and public/uploads writable (775), .env writable. |
.env |
Exists and has valid database details and APP_KEY. |
| Old cache | Delete the files in bootstrap/cache (except .gitignore) and storage/framework/views. |
To see the real message temporarily set APP_DEBUG=true in .env, reload the page, then set it back to false. Debug output on a live site can leak secrets.
All pages except the home page give 404#
The web server is not rewriting URLs. Apache: mod_rewrite must be on and AllowOverride All set; Nginx: use the try_files rule from Install on a VPS.
"419 Page Expired" when submitting a form#
The session expired or cookies are blocked. Reload the page and try again. If it persists: check that storage/framework/sessions is writable, that APP_URL matches the address in the browser (including https and www), and that SESSION_DOMAIN in .env is not set to a wrong domain.
Images or CSS are missing#
APP_URLin.envmust be your real address. Clear caches afterwards.- The
public/storagelink must exist (php artisan storage:link). If your host disables symbolic links, set the public disk topublic/uploadsas the installer does automatically, and make surepublic/uploadsis writable. - A trailing mix of
httpandhttpsblocks content: use HTTPS everywhere and setAPP_URLto thehttpsaddress.
The setup wizard keeps coming back, or says it is already installed#
Installation is recorded in storage/installed. If it is missing (for example after moving files without the storage folder) the wizard starts again. Restore the file from your backup. Never run the wizard again on a populated database: choose Use existing data only if you know what you are doing.
I can't sign in to the admin#
- Use Forgot password on the login page.
- Make sure the maintenance mode IP list or security lockout (Settings > Security) is not blocking you: after too many failed attempts wait a few minutes.
- Check that your user has a role (System > Users).
E-mails do not arrive#
See E-mail: the default mailer is log, which writes to a file. Set SMTP, send a test e-mail, check spam and your domain's SPF/DKIM records.
A payment was taken but the order is still unpaid#
- Check
storage/logs/payments-*.logand the provider's webhook delivery log. - Confirm the webhook URL is exactly
https://your-domain.com/payments/{gateway}/webhook, is HTTPS, and is not blocked by a firewall, a maintenance page or HTTP basic authentication. - Confirm webhook secrets are the same on both sides (Payments overview).
- If the payment is verified at the provider, open the order and click Mark as paid and note the transaction reference.
"Maximum execution time exceeded" or very slow first page load#
The first visit after a deployment compiles views, which can be slow on weak hosting. Raise max_execution_time to 60+ seconds, enable OPcache, and warm the site by visiting the main pages. Large CSV imports run in small batches and should not time out.
Changes do not appear#
Clear caches: Admin > System > Info, or php artisan sellora:clear. Also clear your browser cache. Dashboard and report figures are cached for a few minutes by design.
Currency rates not updating#
Needs the cron job and auto refresh on in Settings > Currencies. Use Refresh now to test the provider.
Cron seems not to run#
See Cron job.
Reset an admin password from the command line#
On a server with SSH, from the folder containing artisan:
php artisan tinker
>>> $u = App\Models\User::where('email', 'you@example.com')->first();
>>> $u->password = 'a-new-strong-password'; $u->save();
(Passwords are hashed automatically.)
Still stuck?#
See Support and include your Sellora version, PHP version, the exact error text and the steps to reproduce it.