Obtener contenido http en 1and1

658px-1_amp_1_logo_svg Para los planes de alojamiento de 1and1 (no servidores virtuales ni dedicados) la directiva allow_url_fopen está deshabilitada, según su propia ayuda puedes hacer un php.ini y habilitarla pero realmente no he sido capaz de hacerlo porque no me lo ha detectado, tampoco se puede hacer dínámicamente con ini_set porque en 1and1 no esta configurado php como modulo de apache.

Si la directiva allow_url_fopen no está habilitada al utilizar la función file_get_contents para obtener el contenido de una página web daría los siguientes erróres:

PHP Warning: fopen(http://www.example.com): failed to open stream: HTTP request failed!
fsockopen(): unable to connect to
file_get_contents(): failed to open stream: HTTP request failed!
PHP Warning: main(): Failed opening ‘http://www.example.com/index.html’ for inclusion …
PHP Warning: include(/usr/local/index.php): failed to open stream: No such file or directory in …

php Para solucionar esto me he creado una función utilizando las funciones de curl que si vienen instalados en 1and1, la función en concreto es la siguiente y hace lo mismo que file_get_contents aunque es un poco más lenta:

function get_page_content($url){
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
    $page = curl_exec($ch);
    curl_close($ch);
    return $page;
}

Comentarios

Anónimo ha dicho que…
Gracias por el aporte.
A mi tambien me ocurria ese problema pero con esa funcion ya esta solucionado.

Saludos!
Anónimo ha dicho que…
Tenia justamente el mismo problema y tu función lo ha solucionado a la primera :)

Gracias!
Anónimo ha dicho que…
Llevo peleándome con este problema semanas... podrias explicarme cómo aplicar/ejecutar esa función? se crea un archivo? Porfavor, necesito ayuda.
Reynier ha dicho que…
Esta función lo que hace es coger el contenido de una web que le pasas como parámetro y te devuelve una cadena con el código html de la misma.

Tienes que tener la librería curl instalada.
hevercking ha dicho que…
Me he encontrado con el mismo problema con el hosting de 1and1 para mi site, ya que necesitaba usar el file_get_contents() para capturar las miniaturas de los vídeos de vimeo para ser visualizadas en las categorías de vidforlaugh.com pero creando el fichero php.ini con el código allow_url_fopen = ON; me ha solucionado el problema.