1<?php 2 3/* 4 * This file is part of the Symfony package. 5 * 6 * (c) Fabien Potencier <fabien@symfony.com> 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12namespace Symfony\Component\Process\Exception; 13 14use Symfony\Component\Process\Process; 15 16/** 17 * Exception for failed processes. 18 * 19 * @author Johannes M. Schmitt <schmittjoh@gmail.com> 20 */ 21class ProcessFailedException extends RuntimeException 22{ 23 private $process; 24 25 public function __construct(Process $process) 26 { 27 if ($process->isSuccessful()) { 28 throw new InvalidArgumentException('Expected a failed process, but the given process was successful.'); 29 } 30 31 $error = sprintf('The command "%s" failed.'."\n\nExit Code: %s(%s)\n\nWorking directory: %s", 32 $process->getCommandLine(), 33 $process->getExitCode(), 34 $process->getExitCodeText(), 35 $process->getWorkingDirectory() 36 ); 37 38 if (!$process->isOutputDisabled()) { 39 $error .= sprintf("\n\nOutput:\n================\n%s\n\nError Output:\n================\n%s", 40 $process->getOutput(), 41 $process->getErrorOutput() 42 ); 43 } 44 45 parent::__construct($error); 46 47 $this->process = $process; 48 } 49 50 public function getProcess() 51 { 52 return $this->process; 53 } 54} 55