[英]How to open link in php code being executed via command line
header("location:http;//")
从命令行执行 PHP 脚本时,上面的行似乎不起作用。 如何最好地通过命令行打开链接?
header()
仅与 HTTP 相关,用于指示服务器应向执行请求的客户端浏览器返回哪些标头。 Location
,特别是,仅仅意味着Hey ! Check out this place instead: xxxxx
Hey ! Check out this place instead: xxxxx
。
反过来,客户端的浏览器将自行决定是否选择遵循此建议(通常会这样做),但任何时候,服务端都会获取这些信息以再次向其客户端重新提供这些信息。
所以最好的方法是在整个网络浏览器中使用你的脚本(正如它应该的那样)。 如果您想从命令行“打开链接”,只需键入浏览器的可执行文件名称,后跟一个 URL(例如: firefox http://www.stackoverflow.com
)。
如果您想做的是从远程 Web 服务器获取文件或特定页面,请改用wget
或curl
等命令行客户端。
一个非常匆忙和快速测试的方法可能是使用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 );
?>
上面提供的解决方案仅适用于 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));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.