Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] HTTP request failed con readfile()

Estas en el tema de HTTP request failed con readfile() en el foro de PHP en Foros del Web. Hola! Me he cambiado de servidor, y me he encontrado en el servidor nuevo (es un servidor dedicado) el siguiente error al utilizar readfile(URL externa): ...
  #1 (permalink)  
Antiguo 21/02/2014, 06:35
 
Fecha de Ingreso: septiembre-2008
Mensajes: 17
Antigüedad: 15 años, 7 meses
Puntos: 0
Exclamación HTTP request failed con readfile()

Hola!

Me he cambiado de servidor, y me he encontrado en el servidor nuevo (es un servidor dedicado) el siguiente error al utilizar readfile(URL externa):

PHP Warning: readfile(http://www.diminio.com/.......lo que sea..): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found, referer: http://www.dominio.es

El caso es que tengo de algún modo impedidas las URL externas en comandos del tipo fopen.

- allow_url_fopen está a on (verificado con phpinfo() y reiniciado el servidor)
- también he probado con allow_url_include
- he probado con el .htaccess (no se si correctamente pero debería ir)
- He probado con el comando linux curl URL con SSH y funciona, luego el servidor no parece tener esa limitación
- He probado con la librería PHP cURL y ocurre lo mismo
- La URL está bien seguro y no tiene espacios en blanco

Ya estoy desesperado , qué puede ser??

Muchas gracias!
  #2 (permalink)  
Antiguo 21/02/2014, 06:38
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 10 meses
Puntos: 127
Respuesta: HTTP request failed con readfile()

si es dedicado piedes usar WGET o CURL
  #3 (permalink)  
Antiguo 21/02/2014, 06:45
 
Fecha de Ingreso: septiembre-2008
Mensajes: 17
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: HTTP request failed con readfile()

Hola, Gracias!, he probado con cURL y pasa lo mismo, con wget, no me dejará si no es root, y la web trabaja desde su cuenta.

He probado ahora con wget y no me ha ido

Código PHP:
$url 'URL EXTERNA';
$outputfile "dl.html";
$cmd "wget -q \"$url\" -O $outputfile";
exec($cmd);
echo 
file_get_contents($outputfile); 
Alguna solución??
  #4 (permalink)  
Antiguo 21/02/2014, 11:10
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 10 meses
Puntos: 127
Respuesta: HTTP request failed con readfile()

prueba con curl a cualquier otra direccion, lo mas seguro es una restriccion del hosting.
verifica que navegues por el puerto 80 de tu server
  #5 (permalink)  
Antiguo 21/02/2014, 13:19
 
Fecha de Ingreso: septiembre-2008
Mensajes: 17
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: HTTP request failed con readfile()

Hola!!

Gracias por contestar!

Si que funciona con curl desde el shell con ssh... es desde PHP donde no me deja, algo tiene php o apache que me lo impide....

¿Más aportaciones?, gracias!
  #6 (permalink)  
Antiguo 21/02/2014, 13:22
 
Fecha de Ingreso: septiembre-2008
Mensajes: 17
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: HTTP request failed con readfile()

IMPORTANTE!!, me has dado una buena pista enlinea777!!

el readfile() queda bloqueado si leo url que están en la misma IP, en el servidor dedicado leo http://..... pero del propio servidor, la misma IP, eso es lo que no va!!

Leer cualquier otra IP si que va!

Como puedo habilitar eso??
  #7 (permalink)  
Antiguo 21/02/2014, 14:22
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: HTTP request failed con readfile()

¿Y no haz probado a usar la ruta absoluta del archivo?

por ejemplo:

$manejador=fopen('/home/miusuario/www/archivos/miarchivo.txt','r');
  #8 (permalink)  
Antiguo 22/02/2014, 08:44
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 10 meses
Puntos: 127
Respuesta: HTTP request failed con readfile()

Cita:
Iniciado por ocp001a Ver Mensaje
¿Y no haz probado a usar la ruta absoluta del archivo?

por ejemplo:

$manejador=fopen('/home/miusuario/www/archivos/miarchivo.txt','r');
opino lo mismo cada función con su respectivo uso.
para que vas a leer una url si tienes el archivo en el mismo server.
  #9 (permalink)  
Antiguo 22/02/2014, 18:49
 
Fecha de Ingreso: septiembre-2008
Mensajes: 17
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: HTTP request failed con readfile()

Hola!!

lo de acceder por una ruta interna del servidor no es posible, ni lógico.

El usuario apache o psa, no tiene por qué saber ni sabe cual es la ruta. Solo root puede hacer eso. Un cliente que está en un servidor compartido, ni tiene por qué saber la ruta de acceso de otro cliente.

root, con un curl URL funciona bien con otro dominio alojado en el mismo servidor
Pero una rutina de apache no puede... ¿Qué hay que configurar en apache o php para poder acceder a una URL que tenga la misma IP que la que desde el dominio que se accede?

No es un problema de iptables, porque root puede con curl.

Muchas gracias! :)
  #10 (permalink)  
Antiguo 22/02/2014, 20:07
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 10 meses
Puntos: 127
Respuesta: HTTP request failed con readfile()

estas liando demaciado la lectura.
solo buscalo por interno.
seria mas facil si explicaras el contexto del porque, estas haciendo esto
  #11 (permalink)  
Antiguo 23/02/2014, 16:16
 
Fecha de Ingreso: septiembre-2008
Mensajes: 17
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: HTTP request failed con readfile()

La solución era añadir en el archivo /etc/hosts:

xxx.xxx.xxx.xxx www.dominio.com dominio.com

De esta forma una web puede leer archivos html o php de otra web del mismo servidor (ya que las 2 web tienen la misma IP dentro del servidor)

Lo uso porque tengo una web que genera galerías de fotos basadas en base de datos y otras 2 web del mismo servidor hacen consultas con un simple readfile:

readfile(http://www.dominio.com/gallery.php?galeria=hola);

Gracias por las ayudas!
  #12 (permalink)  
Antiguo 24/02/2014, 08:01
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 10 meses
Puntos: 127
Respuesta: HTTP request failed con readfile()

NOTA.

Si tenias acceso al server para modificar el host y eso soluciono el problema quiere decir que esta mal configurado o no esta instalado el servidor de DNS el cual se encarga de eso.

Etiquetas: failed, request
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 04:30.