VPS updaten: curl werkt niet meer

Ingediend door Dirk Hornstra op 24-oct-2023 14:40

Als je zoals ik een aantal domeinnamen in je bezit hebt, dan is het verstandig om een VPS te nemen, zodat je daar al die domeinnamen/websites op kunt plaatsen. Anders moet je voor elke URL ook een webhosting-pakket nemen en als je dat bij elkaar optelt, dan ben je per jaar flink wat geld kwijt. Vooral als je eerst bepaalde domeinnamen hebt vastgelegd, maar er nog niets mee doet (geen tijd voor gehad) en je dus eigenlijk ook nog niet echt schijfruimte nodig hebt. Alleen ligt de verantwoordelijkheid voor het updaten van de VPS ook bij jou. Qua kosten is dat het meest verstandigt, maar het gaat helaas niet altijd goed. En dan kost het jou wat anders: namelijk tijd!

Zo heb ik een tijd geleden gehad dat Plesk (het configuratie-beheerpakket) corrupt geworden was. Via SSH inloggen, boel bijwerken en het werkt weer. #zuchtvanopluchting

Een paar weken geleden de melding dat niet elk pakket gevalideerd kon worden. Dat kwam doordat bepaalde pakketten dubbel in de database stonden, een oudere en de actuele versie. Dat heb ik kunnen fixen door het op te schonen. Later moest dat nog een keer. Dus toen heb ik het maar even vastgelegd in een blog wat ik gedaan heb, zodat als het in de toekomst nogmaals gebeurt ik het snel(ler) kan fixen en ook anderen kan helpen: link.

In mijn geval heb ik 2 VPS-en, zodat ik eerst de updates bij nummer 1 kan doorvoeren, kan controleren of een aantal test-websites daarop nog draaien en als ik geen problemen zie: dan voer ik het ook door de andere "productie"-VPS.

Alleen liep ik tegen het punt aan dat een site op productie die ik controleerde geen versie op de test-omgeving had, op deze PHP-pagina haal ik namelijk van familie de boerenbont die ze verkopen op van hun Marktplaats-pagina (wordt op het profiel getoond), zodat ik hier de meest recente items kan tonen. Na mijn update bleef die lijst ineens leeg. Hoewel dat voor deze site niet heel erg is (ik heb hem alleen maar even gebruikt om op dit subdomein wat te laten tonen) heeft het wel impact op andere sites die ik hier heb draaien of wil laten draaien. Als je namelijk op mijn website www.wparty.nl kijkt, dan zie je daar de concerten die de komende tijd in het Gelredome, AFAS Live, Ziggo Dome, Ahoy, Neushoorn en andere locaties gehouden worden. En dat voer ik natuurlijk niet allemaal handmatig in, ik heb taken draaien die via CURL de HTML opvragen en dat verwerken, de resultaten daarvan in de database opslaan en zo deze website vullen. Als CURL niet meer werkt, dan komen we ooit op een punt dat alle locaties geen concerten meer tonen.

Aan de slag dus!

Ik kan via SSH bij de server komen. Ik kan ergens een test.php pagina neerzetten en die laten "uitspugen" wat er aan de hand is. Wordt er wel een object aangemaakt? Wordt er wel een connectie gemaakt? Zo nee, wie weigert de connectie, wij of de andere partij?

Dit staat er in (ziet er rommelig uit, wisseling van FALSE, true, 1, maar je bent wat aan het pielen om het werkend te krijgen...):



<?php
$url = "https://www.marktplaats.nl/u/username/id/";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 ....");
curl_setopt($ch, CURLOPT_AUTOREFERRER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_REFERRER, "https://www.marktplaats.nl");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
unset($ch);
echo "Data is " . $data;
?>

In de terminal kun je gewoon php test.php aanroepen om de output te zien.
 

Dat ik dit niet in de browser doe maar in de terminal van SSH is omdat VERBOSE op "aan" staat. Je krijg in je terminal gedetailleerde info te zien. Zo zie ik dat de connectie goed opgezet wordt, cookies worden terug gegeven en dergelijke.  Daarna heb ik een "lucky shot". Ik zet namelijk de USERAGENT in commentaar (dus even // ervoor zetten), ook CURLOPT_RETURNTRANSFER, 1 zet ik in commentaar, CURLOPT_RETURNTRANSFER, true maak ik weer actie. En hoppa, ik krijg nu wel weer data terug!

Gisteren had ik wel even wat zaken via de browser bekeken, maar hieruit blijkt dat het op deze manier beter te testen (en te fixen) is. Dus mocht je in de buurt van Leerdam wonen en interesse hebben in boerenbont: dit is de link!