Può capitare di dover fare una richiesta ad un server che risponde ad un dominio non risolvibile tramite i DNS, oppure che, se tale dominio fosse risolto tramite DNS, la richiesta non verrebbe recapitata all’indirizzo IP desiderato.
La soluzione, tipicamente, si ottiene modificando il file hosts della macchina su cui viene eseguito lo script PHP. Purtroppo però, nella maggior parte dei casi, negli ambienti di hosting condiviso / VPS non si ha accesso a tale file.
Indice
Risolvere dominio senza DNS con PHP
Vediamo quindi come poter effettuare una richiesta cURL tramite PHP, indicando come risolvere un particolare dominio.
Ecco un sample del codice:

La parte interessante dello snippet precedente è la seconda riga, ovvero l’assegnazione delle proprietà CURLOPT_RESOLVE, che specifica come un determinato dominio debba essere risolto.
Nell’esempio, viene specificato che le richieste rivolte al dominio www.dariocapozzi.it sulla porta 80 (ovvero tramite il protocollo http) devono essere destinate all’indirizzo 87.78.2.132.
In seguito, impostando la direttiva CURLOPT_URL, si specifica l’endpoint a cui fare la richiesta cURL.
La soluzione proposta per risolvere un dominio senza utilizzare il file hosts può essere usata in maniera così immediata solo utilizzando il protocollo http, e non https (per motivi legati ai certificati).
Approfondimenti
Nel caso sia interessato al funzionamento dei DNS, ti potrebbero interessare i seguenti articoli:
Conclusioni
In questo articolo abbiamo visto come effettuare una richiesta cURL tramite PHP, risolvendo il dominio del destinatario della richiesta senza fare uso del Domain Name System, né operando modifica alcuna al file hosts del server che sta eseguendo PHP.