diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/ServerRunCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/ServerRunCommand.php index 925831e726..64957858c1 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Command/ServerRunCommand.php +++ b/src/Symfony/Bundle/FrameworkBundle/Command/ServerRunCommand.php @@ -15,6 +15,7 @@ use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Process\PhpExecutableFinder; use Symfony\Component\Process\ProcessBuilder; /** @@ -82,6 +83,12 @@ EOF */ protected function execute(InputInterface $input, OutputInterface $output) { + if (defined('HHVM_VERSION')) { + $output->writeln('This command is not supported on HHVM.'); + + return 1; + } + $documentRoot = $input->getOption('docroot'); if (!is_dir($documentRoot)) { @@ -99,7 +106,10 @@ EOF $output->writeln(sprintf("Server running on http://%s\n", $input->getArgument('address'))); $output->writeln('Quit the server with CONTROL-C.'); - $builder = $this->createPhpProcessBuilder($input, $output, $env); + if (null === $builder = $this->createPhpProcessBuilder($input, $output, $env)) { + return 1; + } + $builder->setWorkingDirectory($documentRoot); $builder->setTimeout(null); $process = $builder->getProcess(); @@ -137,11 +147,18 @@ EOF if (!file_exists($router)) { $output->writeln(sprintf('The given router script "%s" does not exist', $router)); - return 1; + return; } $router = realpath($router); + $finder = new PhpExecutableFinder(); - return new ProcessBuilder(array(PHP_BINARY, '-S', $input->getArgument('address'), $router)); + if (false === $binary = $finder->find()) { + $output->writeln('Unable to find PHP binary to run server'); + + return; + } + + return new ProcessBuilder(array($binary, '-S', $input->getArgument('address'), $router)); } }