J'ai besoin d'exécuter des commandes Shell à partir du contrôleur, mais pas seulement pour les fichiers à l'intérieur du projet, ex. système (-'rm /var/www/html/test.html') ou système (' Sudo Unzip /var/www/html/test.zip');
J'appelle la fonction mais rien n'arrive, aucune idée de la manière d'exécuter des commandes de shell externes à partir de contrôleur comme supprimer un fichier dans un autre répertoire?
system('rm /var/www/html/test.html');
//or
exec('rm /var/www/html/test.html')
Si vous souhaitez exécuter des commandes de votre PHP Application, je vous recommanderais d'utiliser le Symfony Process Composant :
composer require symfony/process
use Symfony\Component\Process\Process;
Exécutez votre commande:
$process = new Process(['rm', '/var/www/html/test.html']);
$process->run();
Alternativement, (si le processus exécutant PHP dispose des autorisations correctes), vous pouvez simplement utiliser PHP - Dislinkink () Fonction pour supprimer le fichier:
unlink('/var/www/html/test.html');
Je ferais cela avec ce que le cadre fournit déjà:
1) Créez d'abord une classe de commandes:
php artisan make:command TestClean
Cela générera une classe de commande dans l'application\console\commandes
Puis à l'intérieur de la méthode de la poignée de cette classe de commande écrire:
@unlink('/var/www/html/test.html');
Donnez votre commande un nom et une description et exécutez:
php artisan list
Juste pour confirmer que votre commande est répertoriée.
2) Dans votre contrôleur importer une façade artisanale.
use Artisan;
3) Dans votre contrôleur, écrivez ensuite ce qui suit:
Artisan::call('test:clean');
Veuillez vous reporter aux documents pour des utilisations supplémentaires: https://laravel.com/docs/5.7/artisan#Generating-Commands