Как использовать file_get_contents () за прокси? - PullRequest
3 голосов
/ 14 октября 2010

Когда мы используем file_get_contents, что PHP использует для разрешения доменного имени (локальный DNS ??).

Я спрашиваю, потому что я получил эту ошибку:

Внимание: file_get_contents (http://external -domain.com ) [function.file-get-contents]: не удалось открыть поток: попытка подключения не удалось, потому что подключенная сторона сделала не отвечает должным образом после периода время или не удалось установить соединение потому что подключенный хост не смог реагировать. в C: \ test.php в строке 11

Мне удалось исправить эту ошибку ранее, когда я использовал file_get_contents() на внутреннем URL, т.е. http://localhost:9090, проблема заключалась в том, что у меня не было сопоставления localhost с 127.0.0.1 в моем файле hosts на моих окнах машина. После добавления этого я смог использовать file_get_contents() для внутренних URL-адресов.

Можно ли это исправить подобным образом?

Ответы [ 4 ]

3 голосов
/ 17 октября 2010

Вы за прокси?Если это так, вам нужно сообщить об этом PHP, используя stream_context_set_default или передав контекст, созданный с помощью stream_context_create в качестве третьего параметра, в file_get_contents .

2 голосов
/ 14 августа 2013

У меня была такая проблема, потому что значение default_socket_timeout в php.ini было слишком маленьким.

Я бы попробовал удвоить его значение в вашем случае, чтобы посмотреть, решит ли он проблему.

1 голос
/ 29 августа 2014

У меня была похожая проблема (но файл на том же сервере), что заняло у меня несколько часов, чтобы выяснить. Это сделало свое дело тогда:

$fileUrl = "http://selfDomain.com/file.txt";

//external path to local path fix
$fileUrl = str_replace($_SERVER["SERVER_NAME"], $_SERVER["LOCAL_ADDR"], $fileUrl);
0 голосов
/ 15 июня 2015

Просто используйте это, ваша проблема решена.

file_get_contents("http://external-domain.com",true) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...