Luego de consultar expertos en este tema, programadores de diversas áreas y maestros dimos con la solución a la cuestión y la dejamos plasmada en este post.
Solución:
Para permitir el envoltorio https:
- la
php_openssl
la extensión debe existir y estar habilitada allow_url_fopen
debe establecerse enon
En el archivo php.ini debe agregar estas líneas si no existe:
extension=php_openssl.dll
allow_url_fopen = On
Pruebe el siguiente script para ver si hay un contenedor https disponible para sus scripts 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);
la salida debe ser algo como
openssl: yes
http wrapper: yes
https wrapper: yes
wrappers: array(11)
[...]
Pruebe lo siguiente.
function getSslPage($url)
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($ch);
curl_close($ch);
return $result;
Nota: Esto deshabilita la verificación SSL, lo que significa se pierde la seguridad que ofrece HTTPS. Solo use este código para pruebas/desarrollo local, nunca en internet u otras redes públicas. Si este código funciona, significa que el certificado SSL no es de confianza o no se puede verificar, lo que debe solucionar como un problema aparte.
No se te olvide comunicar este post si si solucionó tu problema.