Travailler avec cURL, WordPress et Valet
Je fais partie de ces types qui utilisent le 1.1.1.1et 1.0.0.1comme serveurs DNS principaux.
Mais un problème qui vient avec l’utilisation de ceux-ci comme mes principaux serveurs DNS (et peut-être d’autres, je ne sais pas car je ne les ai pas essayés) est que lorsque j’utilise cURL pour faire des requêtes à un serveur tiers, il se traduira souvent par un 404.
Heureusement, il existe une solution facile.
cURL, WordPress et Valet
En bref, le simple changement consiste à ajouter votre hôte local en tant qu’entrée DNS à vos préférences réseau.
Si vous souhaitez voir les étapes nécessaires pour le faire et un exemple de code qui ne fonctionnera pas (avant le changement, bien sûr), alors lisez la suite.
Notez que je vais utiliser des captures d’écran pour cela, mais si vous êtes à l’aise pour éditer des fichiers DNS sur votre système d’exploitation natif, cela fonctionnera tout aussi bien.
Mise à jour DNS
Selon le système d’exploitation que vous utilisez, la façon dont vous arriverez à modifier les paramètres DNS variera.
Si vous utilisez macOS, l’onglet Réseau et les options avancées de l’adaptateur à utiliser pour vous connecter à Internet vous fourniront ce dont vous avez besoin pour mettre à jour.
Sur cet écran, cliquez sur l’onglet DNS puis ajoutez 127.0.0.1-le en haut de votre liste.
Exemple de code
Quand il s’agit de voir la raison pour laquelle il faut faire quelque chose comme ça, j’ai toujours trouvé utile de voir un exemple de code. La principale raison est que cela nous donne quelque chose à tester avant d’apporter les modifications ci-dessus, puis après avoir effectué les modifications ci-dessus.
<?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
);
}
Cela dit, voici un peu de code que j’utilisais qui ne fonctionne pas sans le DNS approprié configuré ci-dessus :
Mais une fois que le DNS a été mis à jour, cela fonctionne très bien. Et, pour être clair, je préconise toujours [wp_safe_remote_get](https://developer.wordpress.org/reference/functions/wp_safe_remote_get/)et [wp_safe_remote_post](https://developer.wordpress.org/reference/functions/wp_safe_remote_post/)mais cette nature des projets dictera également les contraintes que nous avons.
De plus, jetez un œil à ces fonctions, si vous en avez l’occasion, pour voir ce qui se passe dans les coulisses. 🙂
C’est tout
Comme je l’ai mentionné plus tôt, c’est un processus facile. J’ai trouvé utile de partager à la fois le type de code qui peut être à l’origine du problème, donc si vous voyez quelque chose de similaire et obtenez un résultat similaire en utilisant cURL, WordPress et Valet, alors vous savez comment le résoudre.