Здравствуйте Пытаюсь решить уже несколько дней проблему - не работает file_get_contents("https://....."); При этом с http работает прекрасно, а CURL работает без проблем и с http и с https При попытке получить любую httpS страницу с помощью file_get_contents() получаю ошибки: Warning: file_get_contents() [function.file-get-contents]: SSL: Unknown error: 0 in /www/1.php on line 8 Warning: file_get_contents() [function.file-get-contents]: Failed to enable crypto in /www/1.php on line 8 Warning: file_get_contents(https://money.yandex.ru) [function.file-get-contents]: failed to open stream: operation failed in /www/1.php on line 8 На сервере php-fpm 5.2.8 (OpenSSL/0.9.8j и mcrypt 2.5.8), nginx 0.6.32, ОС FreeBSD 7.0-RELEASE-p5 Самое интересное, как оно работает.. в 1.php - запрашиваю сайт с помощью file_get_content() в 1curl.php - запрашиваю сайт с помощью CURL после рестарта php: 1.php - вообще не работает (ошибки описаны выше - SSL: Unknown error: 0 и Failed to enable crypto) далее, запускаю 1curl.php - все ок, CURL отрабатывает после этого 1.php - работает Четко через 2 раза (прямо четко 2 попытки неудачные, 3яя - удачная. не зависит от времени между запросами!) если после этого запустить 1curl.php еще раз, то 1.php - работает теперь Четко через 1 раз (прямо четко уже 2 попытки удачные, а 3яя - неудачная. не зависит от времени между запросами!) т.е. добавляется еще одна удачная попытка из 3ех последующие запуски 1curl.php ситуацию не меняют эксперимент показал, что такое поведение только в случае, если я запрашиваю CURL'ом любую https страницу, если запрашивать http, то 1.php как не работал, так и продложает не работать такой вот бред Поиск по-сути ничего не дал, разве что нашел близкую проблему в http://bugs.php.net/bug.php?id=44353 , но решения там нет Тестил этот же код на нескольких других серверах, причем на одном установлено все практически 1 в 1 (тот же php-fpm, только версия FreeBSD чуть новее - 7.1-RELEASE-p2) - везде работает без проблем. Параметры сборки php: './configure' '--prefix=/usr/local/php' '--includedir=/usr/local/php/include' '--disable-debug' '--disable-all' '--disable-ipv6' '--with-layout=GNU' '--enable-fastcgi' '--enable-fpm' '--enable-bcmath' '--enable-ctype' '--with-curl=/usr/local/bin/' '--enable-dba' '--enable-dom' '--enable-exif' '--enable-ftp' '--with-gettext=/usr/local' '--with-gd' '--with-freetype-dir=/usr/local/lib' '--with-t1lib=/usr/local/lib' '--with-xpm-dir=/usr/local/lib' '--with-jpeg-dir=/usr/local' '--with-ttf' '--with-iconv' '--enable-libxml' '--with-libxml-dir=/usr/local' '--enable-mbstring' '--with-mime-magic' '--with-mysql=/usr/local/lib/mysql' '--with-mysqli' '--with-mcrypt' '--enable-force-cgi-redirect' '--enable-discard-path' '--enable-reflection' '--enable-sockets' '--enable-session' '--enable-magic-quotes' '--with-pcre-regex' '--with-regex=php' '--enable-xml' '--enable-json' '--with-pear' '--with-zlib' '--with-zlib-dir=/usr/lib' '--with-zend-vm=CALL' '--enable-zend-multibyte' '--with-xmlrpc' '--with-openssl=/usr/local' PHP: print_r(get_loaded_extensions()); Array ( [0] => libxml [1] => xmlrpc [2] => xml [3] => session [4] => sockets [5] => standard [6] => Reflection [7] => mysqli [8] => mysql [9] => mime_magic [10] => mcrypt [11] => mbstring [12] => json [13] => iconv [14] => gettext [15] => gd [16] => ftp [17] => exif [18] => dom [19] => dba [20] => date [21] => curl [22] => ctype [23] => bcmath [24] => zlib [25] => pcre [26] => openssl [27] => cgi-fcgi [28] => Zend Optimizer ) print_r(get_loaded_extensions(true)); Array ( [0] => Zend Extension Manager [1] => Zend Optimizer ) print_r(curl_version()); Array ( [version_number] => 463360 [age] => 3 [features] => 540 [ssl_version_number] => 0 [version] => 7.18.0 [host] => amd64-portbld-freebsd7.0 [ssl_version] => OpenSSL/0.9.8j [libz_version] => 1.2.3 [protocols] => Array ( [0] => tftp [1] => ftp [2] => telnet [3] => dict [4] => http [5] => file [6] => https [7] => ftps ) ) Полноценный Reproduce code: <?php ini_set("error_reporting", E_ALL); ini_set("display_errors", "1"); echo file_get_contents("https://money.yandex.ru"); ?> Может кто что подскажет?
Какой огород? CURL устраивает полностью, но есть много кода, который использует file_get_contents() и хочется, чтобы стандартная функция работала как следует
btsalex 1. я пишу всегда сто-то типа MyGetUrl() и там рулю чем кого вызывать. 2. что ты такого дергашь если у тебя так много вызовов?
1. замечательно 2. не суть, код не мой вовсе Я прошу помочь разрулить конкретную проблему, а не учить как кто реализует подобные вещи и чем нужно/можно пользоваться. Дело не в том, какими еще способами можно получить данные. file_get_contents() - стандартная функция, я хочу чтобы она работала. Если echo вдруг работать не будет, Вы мне print посоветуете юзать? Если нечем помочь по теме, огромная просьба - не захламляйте.