protected function ServerCommand::openBrowser in Drupal 10
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/Command/ServerCommand.php \Drupal\Core\Command\ServerCommand::openBrowser()
- 9 core/lib/Drupal/Core/Command/ServerCommand.php \Drupal\Core\Command\ServerCommand::openBrowser()
Opens a URL in your system default browser.
Parameters
string $url: The URL to browser to.
\Symfony\Component\Console\Style\SymfonyStyle $io: The IO.
File
- core/
lib/ Drupal/ Core/ Command/ ServerCommand.php, line 141
Class
- ServerCommand
- Runs the PHP webserver for a Drupal site for local testing/development.
Namespace
Drupal\Core\CommandCode
protected function openBrowser($url, SymfonyStyle $io) {
$is_windows = defined('PHP_WINDOWS_VERSION_BUILD');
if ($is_windows) {
// Handle escaping ourselves.
$cmd = 'start "web" "' . $url . '""';
}
else {
$url = escapeshellarg($url);
}
$is_linux = Process::fromShellCommandline('which xdg-open')
->run();
$is_osx = Process::fromShellCommandline('which open')
->run();
if ($is_linux === 0) {
$cmd = 'xdg-open ' . $url;
}
elseif ($is_osx === 0) {
$cmd = 'open ' . $url;
}
if (empty($cmd)) {
$io
->getErrorStyle()
->error('No suitable browser opening command found, open yourself: ' . $url);
return;
}
if ($io
->isVerbose()) {
$io
->writeln("<info>Browser command:</info> {$cmd}");
}
// Need to escape double quotes in the command so the PHP will work.
$cmd = str_replace('"', '\\"', $cmd);
// Sleep for 2 seconds before opening the browser. This allows the command
// to start up the PHP built-in webserver in the meantime. We use a
// PhpProcess so that Windows powershell users also get a browser opened
// for them.
$php = "<?php sleep(2); passthru(\"{$cmd}\"); ?>";
$process = new PhpProcess($php);
$process
->start();
}