GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie führe ich externe Shell-Befehle vom Laravel-Controller aus?

Wenn Sie Befehle von Ihrer PHP-Anwendung ausführen möchten, würde ich die Verwendung der Symfony-Prozesskomponente empfehlen:

  1. Führen Sie composer require symfony/process aus

  2. Importieren Sie die Klasse mit use Symfony\Component\Process\Process; in Ihre Datei

  3. Führen Sie Ihren Befehl aus:

    $process = new Process(['rm', '/var/www/html/test.html']);
    
    $process->run();
    

Wenn Sie Laravel verwenden, sollten Sie Schritt 1 überspringen können.

Alternativ (wenn der Prozess, der PHP ausführt, die richtigen Berechtigungen hat) könnten Sie einfach die Funktion unlink() von PHP verwenden, um die Datei zu löschen:

unlink('/var/www/html/test.html');
 

Ich würde dies mit dem tun, was das Framework bereits bereitstellt:

1) Erzeugen Sie zuerst eine Befehlsklasse:

php artisan make:command TestClean

Dadurch wird eine Befehlsklasse in App\Console\Commands

generiert

Schreiben Sie dann in die handle-Methode dieser Befehlsklasse:

@unlink('/var/www/html/test.html');

Geben Sie Ihrem Befehl einen Namen und eine Beschreibung und führen Sie Folgendes aus:

php artisan list

Nur um zu bestätigen, dass Ihr Befehl aufgeführt ist.

2) Importieren Sie in Ihren Controller Artisan-Fassade.

use Artisan;

3) Schreiben Sie in Ihrem Controller dann Folgendes:

Artisan::call('test:clean');

Weitere Verwendungszwecke finden Sie in den Dokumenten:https://laravel.com/docs/5.7/artisan#generating-commands


Linux
  1. Wie lösche ich die ersten/letzten 'n' Zeilen aus der Befehlsausgabe in der Shell?

  2. 5 Möglichkeiten, UNIX-/Linux-Befehle (und Shell-Skripte) im Hintergrund auszuführen

  3. Wie kann ich PHP-Code von der Kommandozeile aus ausführen?

  4. So überprüfen Sie, ob ein Shell-Befehl von PHP existiert

  5. Wie führe ich den Vim-Befehl von der Shell aus?

Wie man von Vim aus auf die Shell zugreift oder externe Befehle ausführt

So führen Sie einen Shell-Befehl mit Python aus

So führen Sie Linux-Startskripts und -Befehle automatisch aus

So führen Sie Shell-Befehle über einen HTTP-Server aus

So entfernen Sie einen Befehl aus dem Verlauf in Linux

Wie führe ich einen Befehl in einem Shell-Skript aus?