使用 PHP 下载和存储远程密码保护文件

当我在任何浏览器的地址栏中输入: https://username:password@www.example.com/Protected/Export/MyFile.zip 时,文件会正常下载。


现在我正在尝试对 PHP 执行相同的操作:连接到远程受密码保护的文件并将其下载到本地目录(如 ./downloads/)。


我已经尝试了多种 PHP 方法(ssh2_connect()、copy()、fopen()、...),但都没有成功。


$originalConnectionTimeout = ini_get('default_socket_timeout');

ini_set('default_socket_timeout', 3); // reduces waiting time


$connection = ssh2_connect("www.example.com");


// use $connection to download the file


ini_set('default_socket_timeout', $originalConnectionTimeout);

if($connection !== false) ssh2_disconnect($connection);

输出:“警告:ssh2_connect():无法在端口 22 [..] 上连接到 www.example.com”


如何使用 PHP 下载此文件并将其存储在本地目录中?


拉风的咖菲猫
浏览 200回答 2
2回答

翻翻过去那场雪

当访问一个 url 时https://username:password@www.example.com/Protected/Export/MyFile.zip您正在使用HTTP Basic Auth,它发送AuthorizationHTTP 标头。这与 无关ssh,因此您不能使用ssh2_connect().要使用 php 访问它,您可以使用 curl:$user = 'username';$password = 'password';$url = 'https://www.example.com/Protected/Export/MyFile.zip';$curl = curl_init();// Define which url you want to accesscurl_setopt($curl, CURLOPT_URL, $url);// Add authorization headercurl_setopt($curl, CURLOPT_USERPWD, $user . ':' . $password);// Allow curl to negotiate auth method (may be required, depending on server)curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);// Get response and possible errors$response = curl_exec($curl);$error = curl_error($curl);curl_close($curl);// Save file$file = fopen('/path/to/file.zip', "w+");fputs($file, $reponse);fclose($file);

慕慕森

这不是 SSH 协议。它可能类似于Apache HTTP 身份验证。您可以遵循并尝试本指南:使用 PHP 进行 HTTP 身份验证
打开App,查看更多内容
随时随地看视频慕课网APP