✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Робота з cURL, WordPress і Valet

26

Я належу до тих, хто використовує 1.1.1.1і 1.0.0.1як свої основні DNS-сервери.

Але одна проблема, яка пов’язана з використанням цих серверів як основних DNS-серверів (і, можливо, інших, я не знаю, оскільки я їх не пробував), полягає в тому, що коли я використовую cURL для надсилання запитів до стороннього сервера, він часто призводить до 404.

На щастя, є легке рішення.

cURL, WordPress і Valet

Коротше кажучи, проста зміна полягає в тому, щоб додати свій локальний хост як запис DNS до ваших мережевих налаштувань.

Якщо вам цікаво ознайомитися з кроками, необхідними для цього, і прикладом коду, який не працюватиме (звичайно, до зміни), читайте далі.

Зауважте, що для цього я використовуватиму знімки екрана, але якщо вам зручно редагувати файли DNS у вашій рідній операційній системі, це працюватиме так само добре.

Оновлення DNS

Залежно від операційної системи, яку ви використовуєте, спосіб зміни налаштувань DNS буде різним.

Якщо ви використовуєте macOS, вкладка «Мережа» та «Додаткові параметри» будь-якого адаптера, який використовуватиметься для підключення до Інтернету, нададуть вам те, що вам потрібно оновити.

На цьому екрані клацніть вкладку DNS, а потім додайте 127.0.0.1вгору списку.

Зразок коду

Коли справа доходить до того, щоб побачити причину необхідності зробити щось подібне, я завжди вважаю, що перегляд зразків коду був корисним. Основна причина полягає в тому, що це дає нам щось для тестування перед внесенням вищевказаних змін, а потім після внесення вищевказаних змін.

<?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
    );
}

З огляду на це, ось фрагмент коду, який я використовував і який не працює без належного DNS, налаштованого вище:

Але після оновлення DNS це працює нормально. І, щоб було зрозуміло, я все ще виступаю за [wp_safe_remote_get](https://developer.wordpress.org/reference/functions/wp_safe_remote_get/)і [wp_safe_remote_post](https://developer.wordpress.org/reference/functions/wp_safe_remote_post/), але природа проектів також буде диктувати, які обмеження ми маємо.

Крім того, якщо у вас є можливість, подивіться на ці функції, щоб побачити, що відбувається за лаштунками. 🙂

Це все

Як я вже згадував раніше, це простий процес. Однак я вважаю корисним поділитися тим, який код може спричиняти проблему, тож якщо ви бачите щось подібне й отримуєте подібний результат із використанням cURL, WordPress і Valet, тоді ви знаєте, як це вирішити.

Джерело запису: tommcfarlin.com

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі