При выдаче PHP5 не удалось открыть поток: ошибка HTTP-запроса при использовании fopen - PullRequest
9 голосов
/ 05 января 2011

Эта проблема, похоже, обсуждалась в прошлом повсюду в Google и здесь, но мне еще предстоит найти решение.

Очень простой fopen дает мне

Предупреждение PHP: fopen (http://www.google.ca): не удалось открыть поток: HTTP-запрос не выполнен! ".

URL, который я получаю, не имеет значения, потому что даже когда я выбираю http://www.google.comон не работает. Один и тот же скрипт работает на другом сервере. Единственный сбой - Ubuntu 10.04 и PHP 5.3.2. Это не проблема в моем скрипте, это что-то другое на моем сервере, или это может быть ошибка в PHP.

Я пытался использовать user_agent в php.ini, но безуспешно. Мой allow_url_fopen установлен на On.

Если у вас есть какие-либо идеи, не стесняйтесь!

Ответы [ 5 ]

9 голосов
/ 05 января 2011

Похоже, что вашей конфигурации не разрешено использовать файловые функции, что является распространенным в наши дни из-за проблем безопасности.Если у вас есть библиотеки cURL, я бы порекомендовал попробовать их.

PHP: cURL

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.google.ca/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$file = curl_exec($ch);
curl_close($ch);

echo $file;
1 голос
/ 05 января 2011

Я не совсем уверен, является ли это проблемой или нет, но я знаю, что в прошлом у меня были проблемы с открытием URL с помощью fopen, часто из-за allow_url_fopen в php.ini или других неизвестных настроек безопасности

Возможно, вы захотите попробовать cURL на PHP, что часто работает для меня, вы действительно легко найдете пример, поиграв в него.

1 голос
/ 05 января 2011

Убедитесь, что в вашей конфигурации php.ini разрешено открывать внешние URL-адреса для fopen:

allow_url_fopen "1"

http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen

0 голосов
/ 19 апреля 2016

Получаете ли вы «HTTP запрос сбой» без дополнительной информации?Тайм-аут сокета может быть истек.По умолчанию это 60 секунд.Смотри: http://php.net/manual/en/function.socket-set-timeout.php

0 голосов
/ 05 января 2011

Проверьте ваш phpinfo вывод - http присутствует в Registered PHP Streams?

...