GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire comandi shell esterni dal controller laravel?

Se vuoi eseguire comandi dalla tua applicazione PHP, ti consiglio di usare il componente Symfony Process:

  1. Esegui composer require symfony/process

  2. Importa la classe nel tuo file con use Symfony\Component\Process\Process;

  3. Esegui il tuo comando:

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

Se stai usando Laravel, dovresti essere in grado di saltare il passaggio 1.

In alternativa, (se il processo che esegue php ha i permessi corretti) puoi semplicemente usare la funzione unlink() di PHP per eliminare il file:

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

Lo farei con ciò che il framework già fornisce:

1) Prima genera una classe di comando:

php artisan make:command TestClean

Questo genererà una classe di comando in App\Console\Commands

Quindi all'interno del metodo handle di quella classe di comando scrivi:

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

Dai al tuo comando un nome e una descrizione ed esegui:

php artisan list

Solo per confermare che il tuo comando è elencato.

2) Nel tuo controller importa la facciata Artisan.

use Artisan;

3) Nel tuo controller scrivi quanto segue:

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

Fare riferimento ai documenti per ulteriori utilizzi:https://laravel.com/docs/5.7/artisan#generating-commands


Linux
  1. Come eseguire un comando in Shell senza salvarlo nella cronologia? [Suggerimenti per Linux]

  2. Come recuperare un lavoro in background da una shell precedente??

  3. Come eseguire i comandi in Gnuplot usando lo script della shell?

  4. 5 modi per eseguire comandi UNIX/Linux (e script della shell) in background

  5. Esegui i comandi della shell dal programma in esecuzione in WINE

Come accedere alla shell o eseguire comandi esterni da Vim

Come eseguire un comando Shell con Python

Come eseguire automaticamente script e comandi di avvio di Linux

Come eseguire i comandi della shell tramite il server HTTP

Come rimuovere un comando dalla cronologia in Linux

Come eseguire un comando in uno script della shell?