Lavorare con cURL, WordPress e Valet
Sono uno di quei tipi che usa 1.1.1.1e 1.0.0.1come i miei server DNS primari.
Ma un problema che deriva dall’utilizzo di questi come i miei server DNS principali (e forse altri, non lo so perché non li ho provati) è che quando utilizzo cURL per effettuare richieste a un server di terze parti, spesso si tradurrà in un 404.
Fortunatamente, c’è una soluzione facile.
cURL, WordPress e Valet
In breve, la semplice modifica consiste nell’aggiungere il tuo host locale come voce DNS alle tue preferenze di rete.
Se sei interessato a vedere i passaggi necessari per farlo e qualche codice di esempio che non funzionerà (prima della modifica, ovviamente), continua a leggere.
Nota che userò screenshot per questo, ma se ti senti a tuo agio nella modifica dei file DNS sul tuo sistema operativo nativo, funzionerà altrettanto bene.
Aggiornamento DNS
A seconda del sistema operativo in uso, il modo in cui si arriva a modificare le impostazioni DNS varierà.
Se stai utilizzando macOS, la scheda Rete e le opzioni Avanzate per qualsiasi adattatore da utilizzare per la connessione a Internet ti forniranno ciò di cui hai bisogno per aggiornare.
In quella schermata, fai clic sulla scheda DNS, quindi aggiungi 127.0.0.1in cima all’elenco.
Codice di esempio
Quando si tratta di vedere il motivo alla base della necessità di fare qualcosa del genere, ho sempre trovato utile vedere il codice di esempio. Il motivo principale è che ci dà qualcosa da testare prima di apportare le modifiche di cui sopra e poi dopo aver apportato le modifiche di cui sopra.
<?php
try {
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($curl);
if (is_object($response)) {
return false;
}
if (false === $response) {
throw new Exception(curl_error($curl), curl_errno($curl));
}
curl_close($curl);
} catch (Exception $e) {
trigger_error(
sprintf(
'Curl failed with error #%d: %s',
$e->getCode(),
$e->getMessage()
),
E_USER_ERROR
);
}
Detto questo, ecco un po’ di codice che stavo usando che non funziona senza il corretto DNS impostato sopra:
Ma una volta che il DNS è stato aggiornato, funziona perfettamente. E, per essere chiari, continuo a sostenere [wp_safe_remote_get](https://developer.wordpress.org/reference/functions/wp_safe_remote_get/)e [wp_safe_remote_post](https://developer.wordpress.org/reference/functions/wp_safe_remote_post/)ma quella natura dei progetti determinerà anche i vincoli che abbiamo.
Inoltre, dai un’occhiata a queste funzioni, se ne hai la possibilità, per vedere cosa sta succedendo dietro le quinte. 🙂
È tutto
Come ho detto prima, è un processo facile. Ho trovato utile condividere sia il tipo di codice che potrebbe causare il problema, quindi se vedi qualcosa di simile e ottieni un risultato simile usando cURL, WordPress e Valet, allora sai come risolverlo.