header("location:http;//")
从命令行执行PHP脚本时,上述行似乎不起作用。如何最好地通过命令行打开链接?
答案 0 :(得分:0)
header()
仅与HTTP相关,用于告诉服务器应将哪些标头返回给执行请求的客户端浏览器。 Location
特别是简单地表示Hey ! Check out this place instead: xxxxx
。
客户的浏览器反过来将自行决定是否选择遵循此建议(通常会这样做),但被服务方在任何时候都不会获取这些信息,以再次将其重新提供给客户。
>因此,最好的方法是在整个Web浏览器中使用脚本(实际上应该如此)。如果要从命令行“打开链接”,只需键入浏览器的可执行文件名称,然后输入URL(例如:firefox http://www.stackoverflow.com
)。
如果您要从远程Web服务器获取文件或特定页面,请使用命令行客户端,例如 wget
或 curl
。
答案 1 :(得分:0)
一种非常急速且经过快速测试的方法可能是使用exec
并以url作为参数将其传递到已知浏览器的路径中-似乎可以正常工作。
<?php
$url='https://www.google.co.uk';
$cmd=sprintf( '%%userprofile%%\AppData\Local\Google\Chrome\Application\chrome.exe %s', $url );
exec( $cmd );
?>
由于@Álvaro的评论,上述内容可以进一步简化(至少在Windows上如此)
<?php
$url='https://www.google.co.uk';
$cmd=sprintf( 'start %s',$url );
exec( $cmd );
?>
答案 2 :(得分:0)
上面提供的解决方案仅适用于 Windows。它不会在 mac OS 上工作。这是一个更通用的解决方案
public function open(string $url): void
{
switch (PHP_OS) {
case 'Darwin':
$opener = 'open';
break;
case 'WINNT':
$opener = 'start';
break;
default:
$opener = 'xdg-open';
}
exec(sprintf('%s %s', $opener, $url));
}