我有一个小脚本,它使用curl并从定义的URL中检索特定内容。我在我的localhost上测试了它并且它有效。
现在我必须从我的免费托管中仅从HTTPS网站(以及证书无效,但我知道所有者)中检索数据,但myserver既不支持CURL
也不支持file_get_contents("https://other-server.com")
功能。顺便说一句,http://other-server.com
是不可访问的。
是否有任何方法可以使用HTTPS端口从此服务器获取文件,但使用HTTP协议?或者有一些使用HTTPS的方法,尽管我的服务器不支持它? (这不是我的服务器,我无法访问其配置)
答案 0 :(得分:2)
试试这个:
<?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 transport not available错误消息',请参阅Socket transport "ssl" in PHP not enabled
如果你的主机是外部主机,也许是一个免费的虚拟主机服务,那么你很幸运。最好的选择是弄清楚哪些虚拟主机启用了SSL传输 - 否则使用HTTPS协议根本不符合。< / p>
你的最后一个'出局'是尝试动态地将扩展加载到PHP语言中。您将需要与
匹配的精确扩展名(dll / so)passthru("cat /proc/cpuinfo");
),例如AMD64,I386 ... 使用的函数是dl
aka dynamic-link来加载库。对于Windows主机,您将需要php_openssl.dll
和php_sockets.dll
- 而对于UNIX,OOops - 您需要重新编译php核心..
快乐的黑客攻击:)