Skip to main content

Check if a Laravel request is from the CLI on Laravelnote

 There might be times where you need to know if a request to your Laravel app is coming from the CLI or from the web. As an example, I wanted to turn on the query log to dump out all the SQL queries.

In AppServiceProvider I added a simple config check to turn on the the log:

if (config('settings.profile')) {
    \DB::connection()->enableQueryLog();
}

With this in place, it would run for web requests, as I wanted, but the side effect is it would also be turned on in our queue jobs and other CLI tasks.

Laravel runningInConsole | Laravelnote

Laravel provides a simple helper called runningInConsole that you can use to help determine what environment you are in.

app()->runningInConsole()

With this I could just an inverse check to make sure my code only runs when it's a web request:

if (config('settings.profile') && ! app()->runningInConsole()) {
	\DB::connection()->enableQueryLog();
}

If you ever come to a situation where you need to know where your app is running, keep this in mind. It's an excellent way of utilizing the internal Laravel helpers to keep your code clean and easy to read.

Popular posts from this blog

Composer Security Update (CVE-2021-29472) for leravel #2021

Composer had a security vulnerability reported (CVE-2021-29472) and a new version has been released to address this. Everyone should run  composer self-update  to get v2.0.13 which includes the fix. According to their  announcment : As a precaution after updating Composer we recommend you audit your composer.lock files to ensure they only contain URLs and none which start with -- , e.g. --config and could be considered command line options. Should you find any such URL values despite our belief that this vulnerability was not exploited in the wild, please contact us immediately by email to security@packagist.org. In general we always recommend you review changes you make to your lock files to ensure no untrusted dependencies or external URLs are introduced to your application. Please note that Packagist.org is only a metadata server and package contents are downloaded from a location chosen by the package maintainers. Private Packagist will store copies of mirrored packag...

Laravel8 in Serializes Models trait | laravelnote

This article was originally posted, with additional formatting, on my personal blog at laravel serializes model Background  When dispatching an object onto the queue, behind the scenes Laravel is recursively serializing the object and all of its properties into a string representation that is then written to the queue. There it awaits a queue worker to retrieve it from the queue and unserialize it back into a PHP object (Phew!). Problem When complicated objects are serialized, their string representations can be atrociously long, taking up unnecessary resources both on the queue and application servers. Solution Because of this, Laravel offers a trait called SerializesModels which, when added to an object, finds any properties of type Model or Eloquent\Collection during serialization and replaces them with a plain-old-PHP-object (POPO) known as a ModelIdentifier. These identifier objects represent the original properties Model type and ID, or IDs in the case of an Eloquent\Collecti...

Password Validation Rule Object in laravel8 by laravelnote

  Originally released in Laravel 5.5,   custom validation rule objects   offer a fluent alternative to string-based rules. In its simplest form, the   Password   rule object replaces string-based validation rules: <?php // String-based $request->validate([ 'password' => 'required|string|confirmed|min:8', ]); // Using the Password rule object $request->validate([ 'password' => ['required', 'confirmed', Password::min(8)], ]); In addition to replacing string rules with a fluent password rule object, the custom password rule object includes built-in methods for ensuring strong passwords: <?php $request->validate([ 'password' => [ 'required', 'confirmed', Password::min(8) ->mixedCase() ->letters() ->numbers() ->symbols() ->uncompromised(), ], ]); Never write custom regex logic for typical...