从仅https的服务器获取文件


Fetch file from https only server

我有一个小脚本,它使用curl并从定义的url中检索特定内容。我在本地主机上测试了这一点,它成功了。

现在我必须从我的免费主机中检索仅HTTPS网站的数据(另外,证书无效,但我知道所有者),但myserver既不支持CURL也不支持file_get_contents("https://other-server.com")功能。顺便说一下,http://other-server.com是不可访问的。

有没有任何方法可以使用HTTPS端口但使用HTTP协议从该服务器获取文件?或者有没有一些方法可以使用HTTPS,尽管我的服务器不支持它?(这不是我的服务器,我还没有访问它的配置)

试试这个:

<?php
$fp = fsockopen("ssl://other-server.com", 443, $errno, $errstr);
if(!$fp) die($errno. " : " . $errstr);
$send = 
 "GET / HTTP/1.0'r'n".
 "Host:other-server.com'r'n".
 "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'r'n".
 "'r'n";
fwrite($fp, $send);
while(!feof($fp)) {
  echo fread($fp, 512);
}
?>

如果您遇到"ssl传输不可用错误消息",请参阅套接字传输";ssl";在PHP中未启用

如果你的主机是外部的,也许是免费的网络托管服务,你就没有运气了。。最好的选择是找出哪些网络主机启用了SSL传输,否则使用HTTPS协议根本不符合要求。

最后一个"out"是尝试动态地将扩展加载到PHP语言中。您将需要与匹配的excact扩展(dll/so)

  1. 主机上的PHP版本(请参阅phpinfo)
  2. 主机(unix,参见passthru("cat /proc/cpuinfo");)的CPU架构,例如amd64、i386
  3. 操作系统"layout",.dll用于windows主机(IIS等),.so用于UNIX

要使用的函数是dl,也就是加载库的动态链接。对于windows主机,您需要php_openssl.dllphp_sockets.dll,而对于UNIX,OOops,您需要重新编译php核心。。

快乐黑客:)

php手册页