Это весь мой код:
<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.
Если у вас есть идеи о том, почему это происходит, я был бы рад услышать это. Спасибо!
У вашего вопроса недостаточно информации, чтобы кто-то мог вам помочь.
Для начала я бы
var_dump($_GET['url'])
)var_dump(file_get_contents($_GET['url']))
;Я предполагаю, что либо администратор вашего сервера отключил упаковщики URL-адресов FOPEN, либо владелец сайта, который вы просматриваете, решил, что он не хочет, чтобы вы очищали их сайт, и блокирует запросы от ваших PHP-скриптов.
Это также помогает развернуть отчеты об ошибках полностью, и установить ошибки отображения на 1
error_reporting(E_ALL);
ini_set('display_errors', 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
вдруг, внезапно перестает работать