2012-03-05 25 views
12

Tengo algunos problemas extraños con file_get_contents después de mover mi sitio a un nuevo dominio. Tuve que configurar un nuevo dominio y una dirección IP (usando Plesk) para obtener un nuevo certificado ssl funcionando. Ahora mi file_get_contents llamando a una secuencia de comandos en el mismo dominio me da esto:file_get_contents - No se pudo abrir la secuencia: ¡Falló la solicitud HTTP! HTTP/1.1 404 no encontrado

no se pudo abrir la secuencia: ¡Falló la solicitud HTTP! HTTP/1.1 404 Not Found

Si llamo a la misma URL usando file_get_contents en otro servidor que funciona bien, y si llamo www.google.com desde el servidor con errores eso es que funciona, por lo que sólo parece estar si llamo una url en el mismo servidor

Tengo la sensación de que podría tener algo que ver con tener dos IP con dos certificados SSL diferentes en el servidor, cuando archivo_get_contents/(página de índice) del servidor del servidor obtengo el plesk 'esto es un nueva página de dominio así que es como apache no está buscando el host virtual correcto cuando se llama desde su propio servidor.

Para aclarar (esperemos!):

En el servidor que aloja al dominio:

file_get_contents('https://mydomain.com?limit=4&offset=0&s_date=2012-02-05&e_date=2012-03-13&order=release_date&dir=desc&cid=12'); 

da "No se pudo abrir la secuencia: HTTP Error en la solicitud HTTP/1.1 404 Not Found"

file_get_contents('http://www.google.com'); 

funciona correctamente

En otro servidor:

file_get_contents('https://mydomain.com?limit=4&offset=0&s_date=2012-02-05&e_date=2012-03-13&order=release_date&dir=desc&cid=12'); 

funciona bien.

He intentado apagar el ssl y sigo teniendo el mismo problema.

+2

publicar código completo le ayudará mejor a encontrar la respuesta correcta –

+0

N ew B ee tiene razón, No estoy seguro de entender esto. – Jack

+0

¿Puedes probar 'echo gethostbyname ('midominio.com');' en tu script? Y muéstranos tu conf. De host virtual. – soju

Respuesta

5

He tenido este problema también, cuando estoy trabajando en un pequeño servidor de prueba en casa. El nombre de dominio se resuelve en su dirección IP externa y se envía una solicitud. Pero debido a que la solicitud proviene de su red, el enrutador no la reconoce como una solicitud normal. Es probable que tenga una interfaz web para configurarlo, e intenta devolver una página desde su propio sistema de gestión, que luego no se encuentra en la ruta especificada.

En ese caso, estaba trabajando en una PC con Windows, y pude resolverlo agregando el dominio que estaba probando en mi archivo hosts, especificando 127.0.0.1 como la dirección IP (o la dirección IP de la servidor, si es otra máquina dentro de la misma red). En Linux debería haber una solución similar, creo.

El problema no es PHP o su servidor, sino su enrutador.

+0

Parece que este es el problema (en mi caso idéntico), ejecutando echo gethostbyname ('midominio.com'); y haciendo ping desde mi computadora dio 2 direcciones IP diferentes – Jonathan

4

La mayor parte del alojamiento ahora bloquea el parámetro furl_open que le permite usar file_get_contents() para cargar datos desde una URL externa.

Puede utilizar CURL o una biblioteca PHP cliente como Guzzle

0

tratar de hacer esto:

file_get_contents('https://mydomain.com?'.urlencode('limit=4&offset=0&s_date=2012-02-05&e_date=2012-03-13&order=release_date&dir=desc&cid=12')); 
Cuestiones relacionadas