我遇到的问题如下:
Warning: file_get_contents(): Unable to find the wrapper "https" -
did you forget to enable it when you configured PHP? in
<b>C:\xampp\htdocs\test_crawl\simple_html_dom.php</b> on line <b>75</b><br
/>
<br />
<b>Warning</b>: file_get_contents(https://www.yahoo.com): failed to open
stream: Invalid argument in
<b>C:\xampp\htdocs\test_crawl\simple_html_dom.php</b> on line <b>75</b><br
/>
我做了一些研究,发现有一些帖子说extension=php_openssl.dll
中的php.ini
取消注释但是当我这样做并重新启动我的服务器时却没有。我使用的脚本如下:
$url = 'https://yahoo.com'
function CrawlMe($url)
{
$html = file_get_html($url);
return json_encode($html);
}
不确定为什么它不起作用会感激你的帮助..
以下是$contents = file_get_contents($url, $use_include_path, $context, $offset);
function file_get_html($url, $use_include_path = false, $context=null,
$offset = -1, $maxLen=-1, $lowercase = true, $forceTagsClosed=true,
$target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true,
$defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT)
{
// We DO force the tags to be terminated.
$dom = new simple_html_dom(null, $lowercase, $forceTagsClosed,
$target_charset, $stripRN, $defaultBRText, $defaultSpanText);
// For sourceforge users: uncomment the next line and comment the
// retreive_url_contents line 2 lines down if it is not already done.
$contents = file_get_contents($url, $use_include_path, $context, $offset);
// Paperg - use our own mechanism for getting the contents as we want to
control the timeout.
//$contents = retrieve_url_contents($url);
if (empty($contents) || strlen($contents) > MAX_FILE_SIZE)
{
return false;
}
// The second parameter can force the selectors to all be lowercase.
$dom->load($contents, $lowercase, $stripRN);
return $dom;
}
答案 0 :(得分:0)
simple_html_dom.php第75行是什么?从你发布的内容我可以说是
$url = 'https://yahoo.com'
缺少一个半冒号,它应该是:
$url = 'https://yahoo.com';
- 看到代码后编辑......
您将偏移设置为-1。这意味着从文件末尾开始阅读。根据文件
远程文件不支持寻找(偏移)。试图 寻找非本地文件可能适用于小偏移,但这是 不可预测,因为它适用于缓冲流。
您的最大长度设置为负1.根据文件:
如果找不到文件名,则会生成E_WARNING级别错误, maxlength小于零,或者如果寻求指定的偏移量 流失败了。
您无需指定所有这些参数,这样可以正常工作:
$file = file_get_contents('https://www.yahoo.com');