2016-11-02 8 views
1

После выделения мою проблему, я тестирую мой API с помощью следующего кода:локон/file_get_contents/get_headers «не удалось открыть поток»

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

иногда это работает, но иногда она возвращает 404. link I access просто возвращает ответ 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. Та же проблема.

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

Благодарим за помощь.

UPDATE

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

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. Это может вызвать проблемы, но как я могу это исправить?

+1

Если вы думаете, что это проблема с конфигурацией сервера, вы должны отправить свой вопрос на [Server Fault] (http://serverfault.com/). Это касается вопросов о программировании. –

ответ

0

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

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

Так что иногда, когда я попытался получить доступ к сайту вызовы были перенаправлены на правой ф (путь показал в ipv4), а иногда старый неправильно один (путь указывает ipv6)