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