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()
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.
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.
}
12565200cookie-checkErkennen Sie, ob Sie von der Befehlszeile in Laravel 5 ausgeführt werdenyes