Estoy trabajando para configurar el procesamiento de tarjetas de crédito y necesitaba usar una solución para CURL. El siguiente código funcionó bien cuando estaba usando el servidor de prueba (que no llamaba a una URL SSL), pero ahora, cuando lo estoy probando en el servidor en funcionamiento con HTTPS, falla con el mensaje de error "no se pudo abrir la transmisión".
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
James simpson
fuente
fuente
Para permitir el envoltorio https:
php_openssl
extensión debe existir y estar habilitadaallow_url_fopen
debe establecerse enon
En el archivo php.ini debe agregar estas líneas si no existe:
fuente
Intente lo siguiente.
fuente
Esto le permitirá obtener el contenido de la URL, ya sea HTTPS
fuente
Esto probablemente se deba a que su servidor de destino no tiene un certificado SSL válido.
fuente
Simplemente agregue dos líneas en su archivo php.ini.
extension=php_openssl.dll
allow_url_include = On
está trabajando para mí.
fuente
allow_url_fopen
que la pregunta se refiere a la apertura de URL, sin incluir.Yo tenía el mismo error. Establecer
allow_url_include = On
en lophp.ini
arregló para mí.fuente
HTTPS es compatible a partir de PHP 4.3.0, si ha compilado en soporte para OpenSSL. Además, asegúrese de que el servidor de destino tenga un certificado válido, el firewall permita conexiones salientes y
allow_url_fopen
en php.ini esté configurado como verdadero.fuente
En mi caso, el problema se debió a que WAMP usaba un php.ini diferente para CLI que Apache, por lo que la configuración realizada a través del menú WAMP no se aplica a CLI. Simplemente modifique el CLI php.ini y funciona.
fuente
A veces, un servidor elegirá no responder en función de lo que ve o no ve en los encabezados de solicitud http (como un agente de usuario apropiado). Si puede conectarse con un navegador, tome los encabezados que envía e imítelos en el contexto de su transmisión.
fuente
Me quedé atrapado con https no funcional en IIS. Resuelto con:
file_get_contents ('https ..) no se cargaba.
editar php.ini con:
curl.cainfo = "C: \ Archivos de programa \ PHP \ v7.3 \ extras \ ssl \ cacert.pem" openssl.cafile = "C: \ Archivos de programa \ PHP \ v7.3 \ extras \ ssl \ cacert.pem"
¡finalmente!
fuente
PARA VERIFICAR SI UNA URL ESTÁ ACTIVADA O NO
El código de su pregunta se puede reescribir como una versión funcional:
fuente