Как заставить file_get_contents () работать с HTTPS?

Я работаю над установкой обработки кредитной карты и должен был использовать обходное решение для ЗАВИХРЕНИЯ. Следующий код хорошо работал, когда я использовал тестовый сервер (который не называл URL SSL), но теперь когда я тестирую его на рабочем сервере с HTTPS, он перестал работать с сообщением об ошибке, "не удался открыть поток".

function send($packet, $url) {
  $ctx = stream_context_create(
    array(
      'http'=>array(
        'header'=>"Content-type: application/x-www-form-urlencoded",
        'method'=>'POST',
        'content'=>$packet
      )
    )
  );
  return file_get_contents($url, 0, $ctx);
}
99
задан DRosenfeld 17 February 2019 в 11:48
поделиться

4 ответа

Попробуйте следующий скрипт, чтобы проверить, есть ли https-обертка, доступная для ваших php-скриптов.

$w = stream_get_wrappers();
echo 'openssl: ',  extension_loaded  ('openssl') ? 'yes':'no', "\n";
echo 'http wrapper: ', in_array('http', $w) ? 'yes':'no', "\n";
echo 'https wrapper: ', in_array('https', $w) ? 'yes':'no', "\n";
echo 'wrappers: ', var_export($w);

вывод должен быть что-то вроде

openssl: yes
http wrapper: yes
https wrapper: yes
wrappers: array(11) {
  [...]
}
87
ответ дан 24 November 2019 в 04:56
поделиться

Вероятно, это связано с тем, что ваш целевой сервер не имеет действующего SSL-сертификата.

9
ответ дан 24 November 2019 в 04:56
поделиться

HTTPS поддерживается начиная с PHP 4.3.0, если вы скомпилированы с поддержкой OpenSSL. Также, убедитесь, что целевой сервер имеет действующий сертификат, брандмауэр разрешает исходящие соединения и allow_url_fopen в php.ini установлено значение true.

.
5
ответ дан 24 November 2019 в 04:56
поделиться

Иногда сервер принимает решение не отвечать, основываясь на том, что он видит или не видит в заголовках http запроса (например, соответствующий пользовательский агент). Если вы можете соединиться с браузером, возьмите заголовки, которые он посылает, и имитируйте их в контексте вашего потока.

.
1
ответ дан 24 November 2019 в 04:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: