Maison  >  Article  >  cadre php  >  Parlez de la façon d’exécuter des commandes Shell dans Laravel ?

Parlez de la façon d’exécuter des commandes Shell dans Laravel ?

藏色散人
藏色散人avant
2021-11-26 14:56:283298parcourir

La colonne tutorielle suivante de Laravel vous présentera comment exécuter des commandes Shell dans Laravel. J'espère qu'elle vous sera utile !

Parlez de la façon d’exécuter des commandes Shell dans Laravel ?

shell_exec() et exec() peuvent tous deux exécuter des commandes shell. shell_exec() 和 exec() 都可以执行 shell 命令。

如果你的命令不知道因为什么原因而崩溃,你将不会知道其原因 —— 因为shell_exec() 和 exec()Si votre commande plante pour des raisons inconnues, vous ne saurez pas pourquoi - car shell_exec() et exec() ne génèrent pas d'exception,

ils échouent simplement en silence.

Voici ma solution :
    use Symfony\Component\Process\Process;
    
    class ShellCommand
    {
        public static function execute($cmd): string
        {
            $process = Process::fromShellCommandline($cmd);
    
            $processOutput = '';
    
            $captureOutput = function ($type, $line) use (&$processOutput) {
                $processOutput .= $line;
            };
    
            $process->setTimeout(null)
                ->run($captureOutput);
    
            if ($process->getExitCode()) {
                $exception = new ShellCommandFailedException($cmd . " - " . $processOutput);
                report($exception);
    
                throw $exception;
            }
    
            return $processOutput;
        }
    }
  • Elle utilise le composant Process de Symfony. Recommandations associées : Les cinq derniers didacticiels vidéo Laravel

    En utilisant cette méthode, je peux lancer une exception personnalisée, enregistrer la commande et la sortie, ou me connecter au journal pour rechercher des problèmes.
    Recommandations associées : Les cinq derniers didacticiels vidéo Laravel

    Adresse originale : https://dev.to/kodeas/executing-shell-commands-in-laravel-1098

    Adresse traduite : https:// learnku.com/laravel/t/63048
    🎜

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

  • Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer