繁体   English   中英

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

[英]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 服务器获取文件或特定页面,请改用wgetcurl等命令行客户端。

一个非常匆忙和快速测试的方法可能是使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM