// +---------------------------------------------------------------------- namespace think\console\command; use think\console\Command; use think\console\Input; use think\console\input\Option; use think\console\Output; use think\facade\App; class RunServer extends Command { public function configure() { $this->setName('run') ->addOption('host', 'H', Option::VALUE_OPTIONAL, 'The host to server the application on', '127.0.0.1') ->addOption('port', 'p', Option::VALUE_OPTIONAL, 'The port to server the application on', 8000) ->addOption('root', 'r', Option::VALUE_OPTIONAL, 'The document root of the application', App::getRootPath() . 'public') ->setDescription('PHP Built-in Server for ThinkPHP'); } public function execute(Input $input, Output $output) { $host = $input->getOption('host'); $port = $input->getOption('port'); $root = $input->getOption('root'); $command = sprintf( 'php -S %s:%d -t %s %s', $host, $port, escapeshellarg($root), escapeshellarg($root . DIRECTORY_SEPARATOR . 'router.php') ); $output->writeln(sprintf('ThinkPHP Development server is started On ', $host, $port)); $output->writeln(sprintf('You can exit with `CTRL-C`')); $output->writeln(sprintf('Document root is: %s', $root)); passthru($command); } }