Назад | Перейти на главную страницу

ошибка 404 в curl / file_get_contents / get_headers: «не удалось открыть поток»

Выявив проблему, я тестирую свой API с помощью следующего кода:

    $url = 'http://example.com/api/myendpoint;
    print_r(get_headers($url));die();

Иногда это работает, но иногда возвращает 404. Ссылка, к которой я обращаюсь, просто возвращает ответ JSON.

Это стало происходить после перезагрузки сервера Amazon EC2.

Если я делаю это на местном уровне, кажется, что это работает лучше (но даже там иногда это не работает).

     Array
(
    [0] => HTTP/1.1 200 OK
    [1] => Server: nginx/1.10.1
    [2] => Content-Type: application/json
    [3] => Connection: close
    [4] => Cache-Control: private, must-revalidate
    [5] => Date: Wed, 02 Nov 2016 14:47:36 GMT
    [6] => pragma: no-cache
    [7] => expires: -1
    [8] => X-Debug-Token: fadeb4
    [9] => Strict-Transport-Security: max-age=31536000; includeSubdomains;
)

Пытался сделать в некоторых онлайн-тестерах php. Та же проблема.

Я считаю, что это проблема конфигурации сервера, но я понятия не имею, как это отладить.

Спасибо вам за помощь.

ОБНОВИТЬ

Я получил эти данные, когда увидел подробности своего запроса / ответа

Array
(
    [url] => http://example.com/api/myendpoint
    [content_type] => text/html
    [http_code] => 404
    [header_size] => 163
    [request_size] => 206
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 0.00557
    [namelookup_time] => 0.004207
    [connect_time] => 0.004851
    [pretransfer_time] => 0.004874
    [size_upload] => 0
    [size_download] => 579
    [speed_download] => 103949
    [speed_upload] => 0
    [download_content_length] => 579
    [upload_content_length] => 0
    [starttransfer_time] => 0.005555
    [redirect_time] => 0
    [redirect_url] => 
    [primary_ip] => ::ffff:XX:XX:XX:XX
    [certinfo] => Array
        (
        )

    [primary_port] => 80
    [local_ip] => ::ffff:YY.YY.Y.YY
    [local_port] => 42744
)

Дело в том, что основной ip XX: XX: XX: XX: XX не является моим настоящим ip. Это мой старый ip, до смены экземпляра на веб-сервере Amazon. Это могло быть причиной проблемы, но как ее исправить?

Я обнаружил, что это было:

Когда я сменил свой веб-сервер Amazon, на моем хостинге OVH я изменил ipv4 своего DNS. Но я не менял ipv6.

Поэтому иногда, когда я пытался получить доступ к сайту, звонки перенаправлялись на правильный ip (путь показан в ipv4), а иногда и на старый неправильный (путь, указанный ipv6)