如何打开通过命令行执行的php代码中的链接

时间:2019-07-14 15:18:34

标签: php

header("location:http;//")

从命令行执行PHP脚本时,上述行似乎不起作用。如何最好地通过命令行打开链接?

3 个答案:

答案 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));
}