php - eliminar - modificar elementos dentro de un iframe
No se puede encontrar el contenedor "https" con file_get_contents (4)
SOLUCIONADO
Para resolver este error, debe instalar el paquete OpenSSL
para PHP en su servidor web .
En un servidor FreeBSD , puede necesitar instalar el siguiente paquete: php53_openssl
y reiniciar su servidor web.
En un servidor de Windows , abra su archivo de configuración php.ini
y simplemente elimine el comentario de la siguiente línea:
;extension=php_openssl
y reinicie el servidor web. El error debe ser resuelto.
Referencia: Lo aprendí de este enlace que funcionó para mí ... así que el crédito va para él.
Llamar a file_get_contents () con https: // urls me da el siguiente error:
warning: file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP?
He leído 10 o más preguntas y todas dicen habilitar la extension=php_openssl.dll
Hice esto y sigo teniendo problemas ...
¿Qué más podría ser?
Asegúrese de que allow_url_include y allow_url_fopen estén configurados en ''On'' en php.ini.
Descomprímalos si se comentan estas líneas.
Además, puede usar la siguiente secuencia de comandos para el diagnóstico: (tomado de la respuesta aceptada en Cómo obtener file_get_contents () para trabajar con HTTPS? )
$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_dump($w);
Como dicen las personas, verifique con la configuración.
phpinfo.php
<?php
phpinfo();
?>
Busque OpenSSL en la página web. Además, no olvide reiniciar el servidor web después de alterar el archivo php.ini.
Si no puede usar file_get_contents () , use cURL si está disponible, es mejor de muchas maneras y más rápido.
function url($url,$option = null) {
$cURL = curl_init();
if ($option) {
curl_setopt($cURL, CURLOPT_URL, $url.$option);
} else {
curl_setopt($cURL, CURLOPT_URL, $url);
}
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cURL, CURLOPT_AUTOREFERER, 1);
curl_setopt($cURL, CURLOPT_HTTPGET, 1);
curl_setopt($cURL, CURLOPT_VERBOSE, 0);
curl_setopt($cURL, CURLOPT_HEADER, 0);
curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($cURL, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($cURL, CURLOPT_DNS_USE_GLOBAL_CACHE, 0);
curl_setopt($cURL, CURLOPT_DNS_CACHE_TIMEOUT, 2);
$output[''page''] = curl_exec($cURL);
$output[''contentType''] = curl_getinfo($cURL, CURLINFO_CONTENT_TYPE);
curl_close($cURL);
return $output;
}
$page = url(''https://example.com/'',''i/like/subfolders'');
Yo tuve el mismo problema. Intentaba acceder al gráfico de Facebook. No era que no pudiera acceder a la URL, era que Facebook estaba devolviendo un error de 400 porque no estaba pasando los parámetros. Intente conectarse a HTTPS en un sitio que tendrá una conexión HTTPS activa. Ej. Prueba esto:
file_get_contents("https://www.namhost.com");
Si eso funciona, debes ver por qué falla la conexión HTTP a la que te estás conectando, porque el problema no es que no puedas conectarte a los HTTP, sino que a lo que te estás conectando no le gusta la solicitud.