Seguir redirecciones con cURL

Con un proyecto reciente he tenido el problema de que al tratar de importar las imágenes a mi servidor via cURL me generaba un archivo con extensión de imagen, pero no se me ocurrió ni editarlo.

Después de mirar a ver en que punto me fallaba el código, me dió por mirar el archivo y… Como veía que tenía 1kb aprox, digo… pues no llevará nada legible. Craso error, por que ahí estaba la solución. El principal problema es que el archivo no estaba vacío, pero tampoco era una imagen.

Por probar y para mi sorpresa lo abrí con el bloc de notas y era lo siguiente:

#<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
#<TITLE>301 Moved</TITLE></HEAD><BODY>
#<H1>301 Moved</H1>
#The document has moved
#<A HREF="http://www.google.com/">here</A>.
#</BODY></HTML>

Y ya quedó clarísimo, después de media hora dándome de leches contra el monitor para ver que otra parte del código estaba mal. Comprobé que esa ‘imagen vacía’, resulta que era una redirección.
La forma más simple de hacerlo es, cuando hacemos la llamada a cURL, añadir el parámetro siguiente en el curl_setopt_array

CURLOPT_FOLLOWLOCATION => true

Al final el código de llamada de cURL se quedó así de forma funcional:

$fp = fopen($pathMediaUpload . $imageName, 'w+');

    curl_setopt_array($curl, array(
        CURLOPT_URL => $url,
        CURLOPT_FILE => $fp,
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_FOLLOWLOCATION => true
    ));

    $response = curl_exec($curl);
    $err = curl_error($curl);
    curl_close($curl);

Y voilà, ya comenzaron de nuevo a importarse las imagenes. Con esto ya hice un fix para que volviera a importar imágenes de nuevo.

Seguir redirecciones cURL via línea de comandos

Si lo que realmente quieres es usar cURL vía línea de comandos y te falla al traer el contenido por la redirección, es tan fácil como usar el parámetro -L

curl -L test.com

Con esto lograremos que cURL siga las redirecciones.

Y ya con el problema resuelto, solo me queda decir que si buscas resolución a más problemas relacionados con PHP o Nginx, visita mi categoría dedicada a ello:

Apache – PHP – LAMP

Si te ha servido de ayuda, no olvides valorar con 5 estrellitas el post y compartirlo en tus redes sociales, ¡me estarás ayudando a ayudarte!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.