DEV Community

Cover image for Executing Shell Commands In Laravel
Bertug Korucu for Kodeas

Posted on

Executing Shell Commands In Laravel

Both shell_exec() and exec() do the job - until they don't.

If your command crash for some reason, you won't know - shell_exec() and exec() don't throw Exceptions. They just fail silently. 😱

So, here is my solution to encounter this problem:

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;


        if ($process->getExitCode()) {
            $exception = new ShellCommandFailedException($cmd . " - " . $processOutput);

            throw $exception;

        return $processOutput;
Enter fullscreen mode Exit fullscreen mode

It utilises Symfony's Process (which comes out of the box to Laravel).

With this way, I can throw a custom exception, log the command and the output to investigate, report it to my logs to investigate, etc.

No more failing silently 😇

Hope you like this little piece! If you do, please give it a ❤️

Top comments (5)

phpdevvn profile image Download video

Thank you so much!

muetze profile image
Norman Huth

Simple use Laravel Processes:

awaiscb profile image

Thanks Where to keep this file in project?

bertugkorucu profile image
Bertug Korucu

In a smaller project, I'd create a "app/Helpers" directory

reynoldgan profile image