How can I check debug mode on Laravel

Stefan Bogdanescu

Founder & Senior Architect · 2026-06-29

Laravel Company

Unlocking Debugging in Laravel: How to See Errors When Developing Locally

As a senior developer, one of the most fundamental aspects of building robust applications is the ability to debug effectively. When working on a local environment, encountering errors can halt your progress. Understanding how Laravel manages error reporting and debugging is crucial for quickly identifying and fixing issues. This guide will walk you through the definitive way to enable and utilize debug mode in Laravel so you can see exactly what is going wrong during local development.

The Heart of Debugging: APP_DEBUG Environment Variable

The entire mechanism for controlling the verbosity of error reporting in a Laravel application hinges on a single, simple environment variable: APP_DEBUG. This setting acts as a master switch that dictates how Laravel handles exceptions and error responses to the end-user (or the developer viewing the request).

By default, for security reasons, most production environments have APP_DEBUG set to false. This prevents sensitive stack traces from being exposed publicly. However, during local development, you want these details to see them immediately.

You control this setting by editing your .env file located in the root directory of your Laravel project:

dotenv
APP_DEBUG=true

When this variable is set to true, Laravel enables detailed error reporting. This means that if an unhandled exception occurs, Laravel will render a detailed view containing the stack trace, environment details, and the specific error message directly in the browser, which is invaluable for debugging local issues.

Understanding Error Handling in App\Exceptions\Handler.php

The reason you might have struggled with modifying the render method in App\Exceptions\Handler.php is that Laravel’s core exception handling system already incorporates the APP_DEBUG setting directly into its logic. Attempting to manually override this behavior often leads to complexity rather than a simple fix.

When debugging, you don't necessarily need complex conditional logic inside the handler; you simply need to ensure that when APP_DEBUG is true, Laravel renders the detailed error view. If you are seeing errors but not the expected details, it usually points to an issue with how the request is being handled or a misconfiguration elsewhere in your application, rather than a flaw in the basic debug check itself.

For instance, if you are dealing with HTTP exceptions specifically, Laravel handles this gracefully when debugging is enabled. You should rely on the framework's built-in behavior first. If you need custom error presentation (e.g., using custom views instead of the default ones), you can extend or modify the handler, but for simple debugging visibility, setting APP_DEBUG=true is the primary step.

Best Practices Beyond APP_DEBUG

While setting APP_DEBUG=true is essential for seeing full stack traces during development, relying solely on error pages is not always the most efficient method. As you build larger applications—especially those following principles outlined by Laravel—you should integrate robust logging practices alongside debugging.

1. Utilize Logging: For errors that occur silently or during background processes where a browser view isn't possible, logging is superior. Use the built-in Log facade to record detailed information:

php
use Illuminate\Support\Facades\Log;

try {
    // Code that might fail
    throw new \Exception("Something went wrong!");
} catch (\Exception $e) {
    // Log the full error details for later review
    Log::error("Application Error: " . $e->getMessage(), ['trace' => $e->getTraceAsString()]);
    // Handle the response appropriately
}

2. Debugging Tools: Beyond environment variables, leverage IDE debugging tools (like Xdebug) integrated with your IDE to step through your code line by line. This provides a much deeper level of control than simply viewing an error page.

Conclusion

To summarize, checking debug mode in Laravel is straightforward: set APP_DEBUG=true in your .env file. This immediately activates the detailed error display mechanism that allows you to see stack traces and internal details when working on your local environment. While custom exception handlers offer powerful control, they should be used for fine-tuning presentation rather than replacing the fundamental debug switch. By combining the simplicity of APP_DEBUG with robust logging practices, developers can ensure their Laravel applications are not only functional but also easily maintainable and debuggable. For deeper architectural insights into making your application more resilient, exploring the official documentation provided by laravelcompany.com is highly recommended.