Ошибка получения file_get_contents — simple_html_dom.php XAMPP

Проблема, с которой я столкнулся, ниже:

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

Решение

Что в строке 75 файла simple_html_dom.php? Из того, что вы опубликовали, все, что я могу сказать, это

$url = 'https://yahoo.com'

отсутствует точка с запятой, это должно быть:

$url = 'https://yahoo.com';

—Изменить после просмотра кода …

Вы устанавливаете смещение -1. что означает начать чтение с конца файла. Согласно документации

Поиск (смещение) не поддерживается с удаленными файлами. Пытаться
поиск по нелокальным файлам может работать с небольшими смещениями, но это
непредсказуемо, потому что работает в буферизованном потоке.

Ваша максимальная длина установлена ​​на минус 1. Согласно документации:

Ошибка уровня E_WARNING генерируется, если имя файла не может быть найдено,
maxlength меньше нуля или при поиске указанного смещения в
поток терпит неудачу.

Вам не нужно указывать все эти параметры, это будет нормально работать:

$file = file_get_contents('https://www.yahoo.com');
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]