Erkennen Sie, ob Sie von der Befehlszeile in Laravel 5 ausgeführt werden

Lesezeit: 2 Minuten

Ich habe einen Anwendungsfall, in dem wir den Anwendungsfluss ändern müssen, wenn die Anwendung von der Befehlszeile über Artisan ausgeführt wird (Migrationen, Seeds, route:list).

In Laravel 4 könnte man das so machen:

App::runningInConsole()

Gibt es ein Äquivalent in Laravel 5?

Die Verwendung der Umgebungsvariablen (.env) wird in diesem Fall nicht bevorzugt, da diese Befehle gelegentlich in der Produktion ausgeführt werden müssen (auf Produktionsressourcen verweisen) und ich lieber vermeiden möchte, auf doppelte (.env.commandline) Dateien zurückzugreifen.

Ich bin mir nicht sicher, ob es frühere Versionen gibt, aber in Laravel 5.2 kannst du noch machen App::runningInConsole() obwohl es in der Dokumentation nicht erwähnt wird.

  • Ich kann es in der Version verwenden 5.0.35.

    – Benutzer2094178

    8. November 2016 um 0:06 Uhr

  • nachweislich arbeiten in 5.4.36 wahrscheinlich nur ein Namespace-Problem \App::runningInConsole()

    – Deak Karns

    22. November 2017 um 14:41 Uhr

  • app()->runningInConsole()

    – CharlieJade

    11. September 2018 um 14:13 Uhr

  • Auch verfügbar in Laravel 5.7

    – Algorithmus

    5. Oktober 2018 um 9:43 Uhr

  • Laravel 5.8 funktioniert mit App::runningInConsole() und app()->runningInConsole()

    – lewis4u

    25. August 2019 um 21:21 Uhr

Sie können die PHP-Funktion verwenden php_sapi_name (http://php.net/manual/en/function.php-sapi-name.php), um herauszufinden, ob das Skript von einem Befehl gestartet wurde oder nicht.

In Ihrem Fall sollten Sie so etwas wie überprüfen

if (strpos(php_sapi_name(), 'cli') !== false) {
    // Run from command
}

Möglicherweise müssen Sie jedoch das Dokument überprüfen, um den richtigen Wert zu finden, der in jedem Fall überprüft werden muss. (Es kann manchmal anders sein, aber im Grunde sollte es immer eine andere Ausgabe von einem Skript geben, das durch einen Befehl gestartet wird.)

  • Dies funktioniert, hatte wie zuvor auf eine integrierte Lösung gehofft, aber weitere Recherchen ergeben, dass die Funktionalität veraltet ist. Markieren als Lösung.

    – Forrest Marvez

    18. März 2015 um 19:21 Uhr

  • @ForrestMarvez Ich bin mir nicht 100% sicher, aber ich denke, es wurde auf Laravel 5 als veraltet markiert, da das Ergebnis der Funktion nicht immer auf jedem Server / jeder Konfiguration gleich war.

    – Clément Malet

    18. März 2015 um 19:23 Uhr

Benutzer-Avatar
BrianCP

Ab Laravel 5.1 funktioniert das … $app->runningInConsole()
https://laravel.com/api/5.1/Illuminate/Foundation/Application.html

Grundlegende Verwendung:

if (! $app->runningInConsole()) {
 // do something
}

Jeder kann Laravel verwenden app() Hilfsfunktion, um Probleme im Zusammenhang mit Namespaces zu vermeiden. Um also zu überprüfen, ob das Skript in der CLI oder im Browser ausgeführt wird, können Sie diese Codezeile verwenden app()->runningInConsole()

Grundlegende Verwendung:

if ( app()->runningInConsole() ){
    // it's console.
}

1256520cookie-checkErkennen Sie, ob Sie von der Befehlszeile in Laravel 5 ausgeführt werden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy