curl cron

Curl Error 52 Respuesta vacía del servidor



cron (10)

Tengo una configuración de trabajo cron en un servidor para ejecutar un script de copia de seguridad en PHP alojado en otro servidor. El comando que he estado usando tiene el siguiente formato:

curl -sS http://www.example.com/backup.php

Últimamente recibí este error cuando el Cron se ejecuta

curl: (52) Empty reply from server

No tengo idea de lo que esto significa. Si voy al enlace directamente en mi navegador, el script funciona bien y obtengo mi pequeño archivo zip de respaldo.

¿Alguien puede proporcionar información al respecto?


Curl proporciona este error cuando no hay respuesta de un servidor, ya que es un error que HTTP no responda nada a una solicitud.

Sospecho que el problema que tienes es que hay una parte de la infraestructura de red, como un firewall o un proxy, entre tú y el host en cuestión. Conseguir que esto funcione, por lo tanto, requerirá que discutas el problema con las personas responsables de ese hardware.


En mi caso, esto fue causado por un problema PHP APC. El primer lugar para buscar sería los registros de errores de Apache (si está utilizando Apache).

Espero que esto ayude a alguien.


En mi caso, fue la redirección del servidor; curl -L resolvió mi problema.


Esto puede suceder si se le pide a curl que haga HTTP sin formato en un servidor que hace HTTPS.

Ejemplo:

$ curl http://google.com:443 curl: (52) Empty reply from server


He tenido este problema antes. Descubrí que tenía otra aplicación usando el mismo puerto (3000).

Una manera fácil de descubrir esto:

En la terminal, escriba netstat -a -p TCP -n | grep 3000 netstat -a -p TCP -n | grep 3000 (sustituya el puerto que está utilizando para el ''3000''). Si hay más de uno escuchando, algo más ya está ocupando ese puerto. Debe detener ese proceso o cambiar el puerto para su nuevo proceso.


Otra razón común para una respuesta vacía es el tiempo de espera. Compruebe todos los saltos desde donde se ejecuta la tarea cron a su servidor PHP / destino. Probablemente haya un dispositivo / servidor / nginx / LB / proxy en algún lugar a lo largo de la línea que finaliza la solicitud antes de lo esperado, dando como resultado una respuesta vacía.


Pruebe this -> En lugar de ir a través de cURL, intente iniciar sesión en el sitio que está tratando de alcanzar con Telnet. La respuesta que devuelve su intento de conexión será exactamente lo que verá el cURL cuando intente conectarse (pero que no le resultará útil). Ahora, dependiendo de lo que vea aquí, puede sacar una de varias conclusiones:

Está intentando conectarse a un sitio web que es un host virtual basado en nombre, lo que significa que no se puede llegar a él a través de la dirección IP. Algo salió mal con el nombre de host, es posible que haya escrito mal algo. Tenga en cuenta que usar GET en lugar de POST para los parámetros le dará una respuesta más concreta.

El problema también puede estar relacionado con el encabezado 100-continue. Intenta ejecutar curl_getinfo($ch, CURLINFO_HTTP_CODE) y verifica el resultado.


Puede suceder cuando el servidor no responde debido a la utilización del 100% de la CPU o de la memoria.

Recibí este error cuando estaba intentando acceder a la API de sonarqube y el servidor no respondía debido a la utilización total de la memoria


Puedes probar este curs -sS " http://www.example.com/backup.php " poniendo tu URL en "" que funcionó para mí. No sé la razón exacta pero supongo que poner la url en " "completa la solicitud al servidor o simplemente completa la solicitud de encabezado.


Sucede cuando intenta acceder a un sitio web seguro como Https.

Espero que te hayas perdido ''s''

Intente cambiar la URL para curl -sS -u "nombre de usuario: contraseña" https://www.example.com/backup.php