Я работаю над настройкой обработки кредитных карт, и мне нужно использовать обходной путь для CURL. Следующий код работал нормально, когда я использовал тестовый сервер (который не вызывал 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);
}
php
curl
https
file-get-contents
Джеймс Симпсон
источник
источник
Чтобы разрешить оболочку https:
php_openssl
расширение должно существовать и быть включеноallow_url_fopen
должен быть установлен наon
В файле php.ini вы должны добавить эти строки, если они не существуют:
источник
Попробуйте следующее.
источник
Это позволит вам получать контент с URL-адреса, будь то HTTPS.
источник
Вероятно, это связано с тем, что на вашем целевом сервере нет действующего сертификата SSL.
источник
Просто добавьте две строки в свой файл php.ini.
extension=php_openssl.dll
allow_url_include = On
он работает для меня.
источник
allow_url_fopen
поскольку вопрос касается открытия URL, не включая.У меня была такая же ошибка. Установка
allow_url_include = On
вphp.ini
фиксированной для меня.источник
HTTPS поддерживается, начиная с PHP 4.3.0, если вы скомпилировали поддержку OpenSSL. Также убедитесь, что у целевого сервера есть действующий сертификат, брандмауэр разрешает исходящие соединения, а
allow_url_fopen
в php.ini установлено значение true.источник
В моем случае проблема была связана с тем, что WAMP использовал другой php.ini для CLI, чем Apache, поэтому ваши настройки, сделанные через меню WAMP, не применяются к CLI. Просто измените CLI php.ini, и он заработает.
источник
Иногда сервер предпочитает не отвечать на основании того, что он видит или не видит в заголовках HTTP-запроса (например, соответствующий пользовательский агент). Если вы можете подключиться к браузеру, возьмите заголовки, которые он отправляет, и имитируйте их в контексте вашего потока.
источник
Я застрял с нефункциональным https на IIS. Решено с помощью:
file_get_contents ('https ..) не загружается.
отредактируйте php.ini с помощью:
curl.cainfo = "C: \ Program Files \ PHP \ v7.3 \ extras \ ssl \ cacert.pem" openssl.cafile = "C: \ Program Files \ PHP \ v7.3 \ extras \ ssl \ cacert.pem"
Ну наконец то!
источник
ЧТОБЫ ПРОВЕРИТЬ, РАБОТАЕТ ЛИ URL
Код в вашем вопросе можно переписать как рабочую версию:
источник