Trabalhando com cURL, WordPress e Valet
Eu sou um desses tipos que usa o 1.1.1.1e 1.0.0.1como meus servidores DNS primários.
Mas um problema que vem ao usá-los como meus principais servidores DNS (e talvez outros, não sei porque não os experimentei) é que quando estou usando cURL para fazer solicitações a um servidor de terceiros, ele muitas vezes resultará em um 404.
Felizmente, há uma solução fácil.
cURL, WordPress e manobrista
Resumindo, a mudança simples é adicionar seu host local como uma entrada DNS às suas preferências de rede.
Se você estiver interessado em ver as etapas necessárias para fazer isso e alguns exemplos de código que não funcionarão (antes da alteração, é claro), continue lendo.
Observe que usarei capturas de tela para isso, mas se você se sentir à vontade para editar arquivos DNS em seu sistema operacional nativo, também funcionará.
Atualizando DNS
Dependendo do sistema operacional que você está usando, a forma como você altera as configurações de DNS varia.
Se você estiver usando o macOS, a guia Rede e as opções Avançadas de qualquer adaptador a ser usado para se conectar à Internet fornecerão o que você precisa atualizar.
Nessa tela, clique na guia DNS e adicione 127.0.0.1ao topo da sua lista.
Código de amostra
Quando se trata de ver o motivo por trás da necessidade de fazer algo assim, sempre achei útil ver o código de exemplo. A principal razão é que isso nos dá algo para testar antes de fazer as alterações acima e depois de fazer as alterações acima.
<?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
);
}
Com isso dito, aqui está um pouco de código que eu estava usando que não funciona sem o DNS adequado configurado acima:
Mas uma vez que o DNS foi atualizado, isso funciona bem. E, para ser claro, ainda defendo [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/)mas essa natureza dos projetos também ditará quais restrições temos.
Além disso, dê uma olhada nessas funções, se tiver a chance, para ver o que está acontecendo nos bastidores. 🙂
Isso é tudo
Como mencionei anteriormente, é um processo fácil. Achei útil compartilhar o tipo de código que pode estar causando o problema, portanto, se você vir algo semelhante e estiver obtendo um resultado semelhante ao usar cURL, WordPress e Valet, saberá como resolvê-lo.