file_get_contents () вдруг не работает

Это весь мой код:

<html>
<body>
<form>
Playlist to Scrape: <input type="text" name="url" placeholder="Playlist URL">
<input type="submit">
</form><?php

if(isset($_GET['url'])){

$source = file_get_contents($_GET['url']);
$regex = '/<a href="(.*?)" class="gothere pl-button" title="/';

preg_match_all($regex,$source,$output);
echo "<textarea cols=100 rows=50>";
$fullUrl = array();
foreach($output[1] as $url){
array_push($fullUrl,"http://soundcloud.com".$url);
}
$final = implode(";",$fullUrl);
echo $final;
echo "</textarea>";
}else{
echo "borks";
}?>
</body>
</html>

Вчера все работало нормально.
Какой код должен сделать это:
Возьмите URL-адрес Soundcloud, извлеките отдельные песни, а затем напечатайте их как song1; song2; song3

Опять же, вчера это работало нормально, и я ничего не изменил с тех пор, я думаю …

Я попытался закомментировать другой код и просто сохранил $ source = file_get_contents ($ _ GET [‘url’]); и вывод $ source, но он вернулся пустым, что заставляет меня думать, что это проблема с file_get_contents.

Если у вас есть идеи о том, почему это происходит, я был бы рад услышать это. Спасибо!

0

Решение

У вашего вопроса недостаточно информации, чтобы кто-то мог вам помочь.

Для начала я бы

  • Убедитесь, что скрипт правильно получает параметр получения URL (var_dump($_GET['url']))
  • Проверьте, что PHP выбирает из URL (var_dump(file_get_contents($_GET['url']));

Я предполагаю, что либо администратор вашего сервера отключил упаковщики URL-адресов FOPEN, либо владелец сайта, который вы просматриваете, решил, что он не хочет, чтобы вы очищали их сайт, и блокирует запросы от ваших PHP-скриптов.

Это также помогает развернуть отчеты об ошибках полностью, и установить ошибки отображения на 1

error_reporting(E_ALL);
ini_set('display_errors', 1);

Хотя, если вы разрабатывали без этого, есть вероятность, что в вашем приложении есть много кода, который работает, но заслуживает предупреждения.

Удачи.

1

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

Возможно, произошло следующее: на сервере был установлен новый сертификат SSL. file_get_contents пытается получить доступ. В нашем случае на целевом сервере был установлен новый сертификат SSL от другого поставщика и другого домена с подстановочными знаками.

Изменение нашего конфига немного исправило проблему.

 $opts = array(
'http' => array(
'method' => "GET",
'header' => "Content-Type: application/json\r\n".
"Accept: application/json\r\n",
'ignore_errors' => true
),
// VVVVV   The extra config that fixed it
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
)
// ^^^^^
);
$context = stream_context_create($opts);
$result = file_get_contents(THE_URL_WITH_A_CHANGED_CERTIFICATE, false, $context);

Я нашел это решение благодаря этот ответ. Это даже было понижено.

Это, безусловно, объясняет тот факт, что file_get_contents вдруг, внезапно перестает работать

0

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