Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] file_get_contents con php y un caso muy RARO!

Estas en el tema de file_get_contents con php y un caso muy RARO! en el foro de PHP en Foros del Web. Buenas, estoy teniendo un escenario que me esta dejando sin cabellos. Estoy desarrollando una aplicacion para escuchar musica atravez de Deezer. Ayer todo funcionaba perfectamente. ...
  #1 (permalink)  
Antiguo 01/07/2013, 18:50
 
Fecha de Ingreso: julio-2012
Ubicación: Asunción
Mensajes: 54
Antigüedad: 7 años, 4 meses
Puntos: 3
Pregunta file_get_contents con php y un caso muy RARO!

Buenas, estoy teniendo un escenario que me esta dejando sin cabellos.

Estoy desarrollando una aplicacion para escuchar musica atravez de Deezer. Ayer todo funcionaba perfectamente. Pero hoy de la nada, dejo de funcionar.

Deezer ofrece una API para que yo pueda obtener los datos que necesito para armar mi lista de reproduccion
como por ejemplo esto: http://api.deezer.com/2.0/search/?q=eminem

Pero ocurre algo raro. Cuando yo ejecuto desde mi localhost (XAMPP), todo funciona de maravilla. Pero cuando subo a mi hosting, no funciona. dejo el codigo:
Código PHP:
Ver original
  1. <?php
  2. $data = file_get_contents('http://api.deezer.com/2.0/search/track/?q=eminem&');
  3. $json = json_decode($data);
  4. print '<pre>';
  5. print_r($json);
  6. print '</pre>';
  7.  
  8. ?>

Bueno, ese mismo codigo me devuelve una respuesta correcta desde mi localhost como dije, pero al subirlo al hosting me devuelve "vacio" como si fuera que no existen datos.

Ya he probado e 3 hostings diferentes y nada hace con que funcione.

He leido usus terminos y condiciones y lo que hago no esta en contra de ello. Es decir, se pueden hacer esos tipos de integraciones.

Tambien se me cruzo por la mente que bloquearan ese contenido especificamente, pero de ser asi, al menos en teoria, no deberia de obtener una respuesta efectiva desde el localhost.

Estoy en esto a mas de 8 horas de seguido, Agradezco alguna idea.

PD:
ya lei la documentacion en PHP.net de file_get_contents y json_decode pero no encontre el mismo escenario que estoy teniendo.
__________________
--
What is real? How do you define real?
If real is what you can feel, smell, taste and see, then real is simply electrical signals interpreted by your brain.
  #2 (permalink)  
Antiguo 01/07/2013, 18:53
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 7 meses
Puntos: 2534
Respuesta: file_get_contents con php y un caso muy RARO!

A mi no se me hace nada raro, menos como para perder 8 horas.

¿La versión/configuración de PHP de tu hosting es idéntica a la que usas en local?

Eso es importante, puede que en local tengas habilitado allow_url_fopen pero en remoto no, ¿cómo saber?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 01/07/2013, 19:06
 
Fecha de Ingreso: julio-2012
Ubicación: Asunción
Mensajes: 54
Antigüedad: 7 años, 4 meses
Puntos: 3
Respuesta: file_get_contents con php y un caso muy RARO!

Cita:
Iniciado por pateketrueke Ver Mensaje
A mi no se me hace nada raro, menos como para perder 8 horas.

¿La versión/configuración de PHP de tu hosting es idéntica a la que usas en local?

Eso es importante, puede que en local tengas habilitado allow_url_fopen pero en remoto no, ¿cómo saber?
Gracias por responder,

En realidad ya he verificado esa configuración en mi hosting y esta en On

Pero ese inconveniente que describo, solo ocurre en ese enlace que mencione, por ejemplo si hago un file get content de este otro enlace http://api.deezer.com/2.0/search/artist/?q=eminem todo funciona bien, pero no es esa la informacion que necesito.

En cuanto a la version:
Remoto:
- Version php: 5.3.21

Local:
- Version php: PHP 5.5.0

==
Recalco la parte que mencione, ayer en mi hosting, funcionaba. de la nada hoy dejo de funcionar
__________________
--
What is real? How do you define real?
If real is what you can feel, smell, taste and see, then real is simply electrical signals interpreted by your brain.
  #4 (permalink)  
Antiguo 01/07/2013, 19:07
Avatar de iandrade  
Fecha de Ingreso: septiembre-2006
Ubicación: Xalapa, Veracruz, MÉXICO.
Mensajes: 171
Antigüedad: 13 años, 1 mes
Puntos: 6
Respuesta: file_get_contents con php y un caso muy RARO!

Asi es, como lo menciona pateketrueke, debes tener deshabilitada la opción de abrir archivos desde ubicaciones externas a tu servidor, no te asustes, muchos esquemas de seguridad tienen inhabilitada esa opción ya que de alguna manera "aseguran" que si el programador no es muy hábil, si alguien llegan a inyectarle código a tu sitio, estos no puedan descargar sus herramientas de hackeo.

Puedes poner un archivo de manera temporal con phpinfo() y ahi verás si esta activa la opción. Lo mejor es que lo consultes con tu proveedor para ver, o si de plano si cambias tu esquema por el consumo de webservices o alguna otra alternativa.

Buen día.
__________________
No todo lo que se hace en segundo plano es AJAX
  #5 (permalink)  
Antiguo 01/07/2013, 19:19
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.970
Antigüedad: 11 años, 3 meses
Puntos: 2185
Respuesta: file_get_contents con php y un caso muy RARO!

Recuerda que json_decode() funciona solo con UTF8 y que si encuentra algún error en la cadena, obtendrás NULL, por lo que primero debes verificar si realmente obtienes una cadena vacía:

var_dump($data);
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 01/07/2013, 19:27
 
Fecha de Ingreso: julio-2012
Ubicación: Asunción
Mensajes: 54
Antigüedad: 7 años, 4 meses
Puntos: 3
Respuesta: file_get_contents con php y un caso muy RARO!

Cita:
Iniciado por Triby Ver Mensaje
Recuerda que json_decode() funciona solo con UTF8 y que si encuentra algún error en la cadena, obtendrás NULL, por lo que primero debes verificar si realmente obtienes una cadena vacía:

var_dump($data);
En la documentacion de la API dice que todos sus JSON solo funcionan con UTF8, ahora me pregunto. Yo debo hacer algo respecto a eso, o ellos deben proporcionar eso?
__________________
--
What is real? How do you define real?
If real is what you can feel, smell, taste and see, then real is simply electrical signals interpreted by your brain.
  #7 (permalink)  
Antiguo 01/07/2013, 19:29
 
Fecha de Ingreso: julio-2012
Ubicación: Asunción
Mensajes: 54
Antigüedad: 7 años, 4 meses
Puntos: 3
Respuesta: file_get_contents con php y un caso muy RARO!

Cita:
Iniciado por iandrade Ver Mensaje
Asi es, como lo menciona pateketrueke, debes tener deshabilitada la opción de abrir archivos desde ubicaciones externas a tu servidor, no te asustes, muchos esquemas de seguridad tienen inhabilitada esa opción ya que de alguna manera "aseguran" que si el programador no es muy hábil, si alguien llegan a inyectarle código a tu sitio, estos no puedan descargar sus herramientas de hackeo.

Puedes poner un archivo de manera temporal con phpinfo() y ahi verás si esta activa la opción. Lo mejor es que lo consultes con tu proveedor para ver, o si de plano si cambias tu esquema por el consumo de webservices o alguna otra alternativa.

Buen día.
Gracias por responder,
acabo de hacer lo que dijiste y segun veo esta activo.

podes fijarte aqui:
http://www.craftedsouls.com/deezer.php
es mi sitio y esta con php info
__________________
--
What is real? How do you define real?
If real is what you can feel, smell, taste and see, then real is simply electrical signals interpreted by your brain.
  #8 (permalink)  
Antiguo 01/07/2013, 20:03
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.970
Antigüedad: 11 años, 3 meses
Puntos: 2185
Respuesta: file_get_contents con php y un caso muy RARO!

La solución puede ser tan fácil como ver lo que obtienes en $data o ingresar al enlace que deseas obtener, copiar el contenido en un script php y aplicar json_decode(), si no obtienes lo que deseas, entonces el json no está codificado correctamente y la solución escapa a tus manos.
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 02/07/2013, 17:26
 
Fecha de Ingreso: julio-2012
Ubicación: Asunción
Mensajes: 54
Antigüedad: 7 años, 4 meses
Puntos: 3
Pregunta Respuesta: file_get_contents con php y un caso muy RARO!

Cita:
Iniciado por Triby Ver Mensaje
La solución puede ser tan fácil como ver lo que obtienes en $data o ingresar al enlace que deseas obtener, copiar el contenido en un script php y aplicar json_decode(), si no obtienes lo que deseas, entonces el json no está codificado correctamente y la solución escapa a tus manos.
Segui el dia de hoy haciendo lo mismo, tratando de descifrar que ocurre.

Hice lo que mencionas aqui, cree un archivo php y pegue el contenido del json.

http://www.craftedsouls.com/file.php

y trate de hacer el decode y todo funciono perfectamente. Estuve averiguando bastante y creo que el problema esta en el UTF-8

porque en la documentacion de deezer dice lo siguiente:
Código Cita:
Ver original
  1. Encoding
  2. All requests and responses must be in UTF-8.

http://developers.deezer.com/api

Almenos sigo con esperanzas.
__________________
--
What is real? How do you define real?
If real is what you can feel, smell, taste and see, then real is simply electrical signals interpreted by your brain.
  #10 (permalink)  
Antiguo 02/07/2013, 18:09
 
Fecha de Ingreso: julio-2012
Ubicación: Asunción
Mensajes: 54
Antigüedad: 7 años, 4 meses
Puntos: 3
Respuesta: file_get_contents con php y un caso muy RARO!

Gracias a todos por las respuestas, el problema no esta mas que en mi Hosting, da la casualidad que Deezer no permite conexion desde Estados Unidos (que es donde estan alojadas mis webs). Entonces desde mi local si funciona, pero desde Estados Unidos no.

Lo comprobe utilizando
http://anonymizer.nntime.com/
Para abrir
http://api.deezer.com/2.0/search?q=eminem

Y ese es el motivo...
__________________
--
What is real? How do you define real?
If real is what you can feel, smell, taste and see, then real is simply electrical signals interpreted by your brain.

Etiquetas: file_get_contents, localhost
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:43.