Предоставление PHP5 не удалось открыть поток: ошибка запроса HTTP-запроса при использовании fopen

Эта проблема, по-видимому, обсуждалась в прошлом повсюду в 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 установлено значение Вкл.

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

Похоже, вашей конфигурации не разрешено использовать функции файлов, что является общим в наши дни из-за проблем с безопасностью. Если у вас есть доступные библиотеки 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; 

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

 allow_url_fopen "1" 

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

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

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

Проверьте свой вывод phpinfo – есть ли http разделе Registered PHP Streams ?

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