Skip to content

Troubleshooting

Precious Lyson edited this page Nov 11, 2026 · 1 revision

Troubleshooting

Start by identifying whether the issue is in Composer/PHP, the generated application bootstrap, a route/controller, or an optional integration. Reproduce the problem with the smallest request or command and consult the app's logs without exposing secrets.

Setup and dependencies

Composer says PHP is too old

Machinjiri requires PHP ^8.4. Check both php --version and the PHP binary Composer uses. A web server may use a different PHP installation from your terminal.

machinjiri command is not found

The installer is a separate global Composer package. Check that it installed successfully and that Composer's global vendor/bin directory is on your PATH.

Could not open input file: artisan

The framework source checkout does not contain an Artisan script. Change into an application generated by the installer and run the command there.

Routing and pages

A route returns 404

  • Confirm the generated entry point includes the route file.
  • Confirm the HTTP method and path match.
  • Register the route before the single Router::dispatch() call.
  • Check route groups and prefixes.
  • Confirm no route cache/configuration is stale if your app enables one.

Controller class cannot be found

Check the application's PSR-4 autoload mapping, namespace spelling, filename/class name, and whether Composer's autoloader is loaded.

View cannot be found

Check the configured view root, the view name/path convention, file extension, and permissions. The starter example uses resources/views/home.view.php, but the generated app controls lookup configuration.

Database

Connection refused or driver unavailable

Confirm the database service is running and reachable, credentials and database name are correct, the PHP driver extension is installed, and the selected driver value matches the configured database. Keep connection errors private in production logs.

Query returns no results

Verify the correct environment/configuration loaded, the migration ran against that database, the query filters use the intended column/value, and the app is not reading a different database than the one seeded.

Queues and integrations

Queue worker reports missing binding

Check that the queue service provider is loaded, the selected driver is configured, and the required queue tables have been initialized when using the database driver. Use the exact instructions from the worker command's help output.

Redis, LDAP, mail, or SMS integration fails

Check optional client packages, required PHP extensions, endpoint reachability, credentials, and provider-side permissions. The framework's class being installed does not guarantee its external service has been configured.

Webhook delivery fails

Check request path/method, signature verification configuration, clocks/secret rotation, response status, and idempotency behavior. Avoid placing raw credentials or complete sensitive payloads in logs.

Safe diagnostics

  • Reproduce with debug mode only in a local environment.
  • In production, return generic error responses and retain details in access-controlled logs.
  • Never paste secrets, tokens, session cookies, or personal data into public issues.
  • Include PHP/framework versions, the exact command or request, sanitized logs, and a minimal reproduction when reporting a bug.

If the issue appears to be a framework vulnerability, follow the private reporting instructions in the security policy.

More

Clone this wiki locally