为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
拉风的咖菲猫 2021-11-26 15:48:12
当我在任何浏览器的地址栏中输入: 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 fileini_set('default_socket_timeout', $originalConnectionTimeout);if($connection !== false) ssh2_disconnect($connection);输出:“警告:ssh2_connect():无法在端口 22 [..] 上连接到 www.example.com”如何使用 PHP 下载此文件并将其存储在本地目录中?
查看完整描述

2 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

当访问一个 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 access

curl_setopt($curl, CURLOPT_URL, $url);


// Add authorization header

curl_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);


查看完整回答
反对 回复 2021-11-26
?
慕慕森

TA贡献1856条经验 获得超17个赞

这不是 SSH 协议。它可能类似于Apache HTTP 身份验证。您可以遵循并尝试本指南:使用 PHP 进行 HTTP 身份验证


查看完整回答
反对 回复 2021-11-26
  • 2 回答
  • 0 关注
  • 198 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信