OVH Community, your new community space.

ERROR 500 Internal Server Error


mundodigital
23/08/2013, 16:32
Cita Publicado inicialmente por Siliconworld
Cambia (o agrega) estos valores en cada plantilla VHOST, no en el master:

Código:

	IPCCommTimeout		360
	IPCConnectTimeout	360
Aumenta a lo que necesites.

Un Saludo.

EDIT: Para testear bien si son funcionales los cambios crea un script php llamado por ejemplo "timeout.php" con esto:
Código:

Cambias el valor para adaptarlo al tiempo que uses, por ejemplo si el timeout lo pones a 600 pues le pones a 599 mismamente.
Como no me quedaba claro si en Debian hay que modificar el Default o la plantilla he modificado los dos tanto la plantilla como el master , añadiendo las mismas variables tanto a uno como a otro . Supongo que finalmente deberé de dejar las variables solo en un sitio , como no lo se de momento lo he dejado así.

No me queda claro ese script al que te refieres ¿ donde debo de ponerlo ? ¿ que es lo que hace ? .

Perdona mi ignorancia.

Un saludo! :confused:

mundodigital
23/08/2013, 16:29
Cita Publicado inicialmente por rootnovato
Puede que tu error sea debido a permisos de archivo, aquí tienes un caso que pinta muy similar al tuyo:

http://forge.prestashop.com/browse/PSCFI-5870
Creo que tengo localizado de donde viene el problema y no es cuestión de permisos , de todas formas gracias por el consejo .

mundodigital
23/08/2013, 16:24
Cita Publicado inicialmente por Guille
No suelo trabajar con FastCGI, siempre he preferido usar el modulo de php para Apache.
Parece que hay un error en el script PHP, seguramente motivado por datos.
Deberías activar el log de php, preferiblemente en fichero, y ver que sale.

Otra opción es que ejecutes el cron.php desde consola en lugar en vez de a través de una llamada http.

php -f /var/www/midominio/cron.php
La verdad es que deje la configuracion PHP en ISPConfig por defecto ,pero en realidad se puede escoger Fast-CGI , CGI , ModPHP y SuPHP .

¿ me recomiendas cambiar la configuración PHP al modulo de Apache que es ModPHP verdad ?

¿ Se puede cambiar de una configuración a otra sin problema ?

Si hago este cambio ¿ afectará al sitio actualmente configurado con FastCGI ?

Para activar el log de PHP en fichero ¿ que debo de hacer ?

Otra cosa en al intentar ejecutar en consola el comando :

php -f /var/www/midominio/cron.php

me dice " could not open input file: /var/www/dominio/cron.php"

Y estoy indicando las rutas correctas pero nada .

Disculpad estas cuestiones que para vosotros son tan obvias para mi son totalmente desconocidas. :confused:

mundodigital
23/08/2013, 16:06
Como decía anteriormente había leído que el cambio de La configuración mod_fcgid son eliminados por host virtual, por lo que sus valores globales no se aplicarán a su host virtual .

Me puse a editar el archivo conf VirtualHost por defecto. En Debian Server, por lo general es /etc/apache2/sites-available/default donde añadí las siguientes variables:

[QUOTE]

Código PHP:
<IfModule mod_fcgid.c>
   
FcgidIOTimeout  7200
IfModule
Después de hacer un reset y de una primera prueba que había funcionado correctamente , me volvió a dar el mismo error , así que he vuelto a ver en la ruta /etc/apache2/sites-available

Encuentro ficheros *.vhost por cada dominio , respecto al modulo mod_fcgid.c he visto que dentro del fichero *.vhost se encuentran distintas variables :




# SocketPath /tmp/fcgid_sock/

# IdleTimeout n (3600 seconds)
# An idle fastcgi application will be terminated after IdleTimeout seconds.
IdleTimeout 3600

# ProcessLifeTime n (7200 seconds)
# A fastcgi application will be terminated if lifetime expired, even no error is detected.
ProcessLifeTime 7200

# MaxProcessCount n (1000)
# The max count of total fastcgi process count.
# MaxProcessCount 1000

# DefaultMinClassProcessCount n (3)
# The minimum number of fastcgi application instances for any one fastcgi application.
# Idle fastcgi will not be killed if their count is less than n
# Set this to 0, and tweak IdleTimeout
DefaultMinClassProcessCount 0

# DefaultMaxClassProcessCount n (100)
# The maximum number of fastcgi application instances allowed to run for
# particular one fastcgi application.
DefaultMaxClassProcessCount 100

# IPCConnectTimeout n (3 seconds)
# The connect timeout to a fastcgi application.
IPCConnectTimeout 8

# IPCCommTimeout n (20 seconds)
# The communication timeout to a fastcgi application. Please increase this
# value if your CGI have a slow initialization or slow respond.
IPCCommTimeout 360

# BusyTimeout n (300 seconds)
# A fastcgi application will be terminated if handing a single request
# longer than busy timeout.
BusyTimeout 300




Segun la documentacion de Apache 2 para mod_fcgid
IPCCommTimeout es la antigua version de FcgidIOTimeout .

En *.vhost está la antigua variable IPCCommTimeout en lugar de FcgidIOTimeout y está en 360, por tanto lo que he hecho ha sido añadir la variable

Código PHP:
<IfModule mod_fcgid.c>
   
FcgidIOTimeout  7200
IfModule
Tanto en /etc/apache2/sites-available/default como en /etc/apache2/sites-available/dominio.com.vhost

Después de volver a comprobar el funcionamiento me sigue arrojando el error :


[Fri Aug 23 13:17:49 2013] [warn] [client 37.59.61.203] (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
[Fri Aug 23 13:17:49 2013] [error] [client 37.59.61.203] Premature end of script headers: cron.php
Buscando información he encontrado que el error está relacionado con la variable FcgidBusyTimeout,
por lo tanto he vuelto a editar Tanto en /etc/apache2/sites-available/default como en /etc/apache2/sites-available/dominio.com.vhost
y he añadido :



.......

FcgidBusyTimeout 7200


Ademas en /etc/apache2/sites-available/dominio.com.vhost
y he editado el BusyTimeout y lo he puesto en 7200.

Bien , con todo esto he reiniciado y he vuelto a ejecutar el script , se ha estado ejecutando , se interrumpía y
continuaba solo y tras 8 intentos por fin ha finalizado :


--2013-08-23 15:33:04-- (intento: 7) http://dominio.com/cron.php
Connecting to dominio.com|==.==.==.==|0... conectado.
Petición HTTP enviada, esperando respuesta... Error de lectura (Expiró el tiempo de conexión) en las cabeceras.
Reintentando.

--2013-08-23 15:48:11-- (intento: 8) http://dominio.com/cron.php
Connecting to dominio.com|==.==.==.==|0... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: no especificado [text/html]
Saving to: `/dev/null'
[ <=> ] 63 --.-K/s in 0s

2013-08-23 16:02:47 (1,29 MB/s) - `/dev/null' saved [63]
Lo que me ha dado ha sido este error constantemente

gd-jpeg: JPEG library reports unrecoverable error: Empty input file
Este error proviene de la ejecución de una línea de código, al cargar una imagen jpg y luego trabajar con ella con el GD2 biblioteca PHP Pero esto ya es tema de la programación del script.php que estoy ejecutando.

Seguiré testeando pero creo que ya puedo dar por solucionado este tema .

Lo que no tengo muy claro es si finalmente la configuración del mod_fcgid en el VirtualHost depende de /etc/apache2/sites-available/default o de /etc/apache2/sites-available/dominio.com.vhost , en fin seguiré investigando.

Muchas gracias por vuestro apoyo!

Siliconworld
23/08/2013, 15:15
Cambia (o agrega) estos valores en cada plantilla VHOST, no en el master:

Código:

	IPCCommTimeout		360
	IPCConnectTimeout	360
Aumenta a lo que necesites.

Un Saludo.

EDIT: Para testear bien si son funcionales los cambios crea un script php llamado por ejemplo "timeout.php" con esto:
Código:

Cambias el valor para adaptarlo al tiempo que uses, por ejemplo si el timeout lo pones a 600 pues le pones a 599 mismamente.

rootnovato
23/08/2013, 15:08
Puede que tu error sea debido a permisos de archivo, aquí tienes un caso que pinta muy similar al tuyo:

http://forge.prestashop.com/browse/PSCFI-5870

Guille
23/08/2013, 12:55
No suelo trabajar con FastCGI, siempre he preferido usar el modulo de php para Apache.
Parece que hay un error en el script PHP, seguramente motivado por datos.
Deberías activar el log de php, preferiblemente en fichero, y ver que sale.

Otra opción es que ejecutes el cron.php desde consola en lugar en vez de a través de una llamada http.

php -f /var/www/midominio/cron.php

mundodigital
23/08/2013, 12:31
Nuevo error


[Fri Aug 23 13:17:49 2013] [warn] [client **.**.**.**] (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
[Fri Aug 23 13:17:49 2013] [error] [client **.**.**.**] Premature end of script headers: cron.php

mundodigital
23/08/2013, 11:59
mecachisenlamar !

La alegria se me ha pasado pronto , me he apresurado al ver que en una primera prueba estaba funcionando correctamente pero vuelve a dar error :

[warn] mod_fcgid: process 12535 graceful kill fail, sending SIGKILL
[warn] [client **.**.**.**] mod_fcgid: read data timeout in 360 seconds
[error] [client **.**.**.**] Premature end of script headers: cron.php

mundodigital
23/08/2013, 11:48
Cita Publicado inicialmente por kennysamuerto
Hombre, alguna idea podemos tener
No me cabe la menor duda !

Gracias a kennysamuerto;Guille;Siliconworld;

mundodigital
23/08/2013, 11:33
Hola compañeros !

El problema ya está resuelto. Aquí está la solución.

Siguiendo las recomendaciones de los compañeros de foro fuí a echar un vistazo al log del servidor Apache, en realidad esta fue la primera cosa que debería haber hecho no se por que no se me habia ocurrido antes. :confused:

Después de ver el registro de errores (/ var/log/apache2/error.log en Debian Server encontré esto:

Código PHP:
[warn] [client **.**.**.**] mod_fcgidread data timeout in 360 seconds
[error] [client **.**.**.**] Premature end of script headerscron.php 
El problema parece residir en el mod_fcgid.

Excavando en la documentación de Apache 2 para mod_fcgid me enteré de la Directiva FcgidIOTimeoutT

La configuración mod_fcgid son eliminados por host virtual, por lo que sus valores globales no se aplicarán a su host virtual .

Me puse a editar el archivo conf VirtualHost por defecto. En Debian Server, por lo general es /etc/apache2/sites-available/default.

La adición de esta línea dentro del contexto :

Código PHP:
<IfModule mod_fcgid.c>
   
FcgidIOTimeout  7200
IfModule
Reinicie Apache2 y el script funciona ahora.

Gracias a rickchristie.com por su post acerca de mod_fcgid!

Siliconworld
23/08/2013, 00:36
Que versión de Apache y PHP tienes? PHP-FPM? Socket? ??? en el log seguramente te diga el por qué está fallando...

Datos, datos, datos....

Guille
22/08/2013, 22:17
Si el max_execution time es de 2 minutos, no entiendo como tarda 5 minutos en dar el error.
Activa el log del php y tendrás más información.

kennysamuerto
22/08/2013, 19:59
Hombre, alguna idea podemos tener, por ejemplo, puede ser debido al max execution time.

Pero el que seguro lo sabe es el log. ¿Has probado a mirar el log de errores del dominio o del servidor?

Saludos

mundodigital
22/08/2013, 19:32
Hola a todos!

Tengo un server KS4G con Debian Squeeze / ISPConfig.

En una instalación de una tienda online con Prestashop tengo que ejecutar una tarea Cron de un script.php para bajar un fichero de productos de un proveedor e importarlo a una base de datos , el problema es que me da el típico ERROR 500: Internal Server Error , mensaje que por lo que parece está directamente relacionado con el "típico timing out" , es decir el limite de ejecución del servidor.

Buscando información he recopilado algunas variables de php.ini que estan relacionadas con este error y he cambiado los siguientes parámetros:

Código PHP:


max_input_time 
180 
max_execution_time 
120 
memory_limit 
128M 

Incluso otros parámetros relacionados con descarga de ficheros

Código PHP:

upload_max_filesize 
32M 
post_max_size 
32M 
Para probar via ssh ejecuto el script con esta orden :

Código PHP:

wget 
-/dev/null http://dominio.com/cron.php 
Y al cabo de 5 minutos recibo el mensaje ERROR 500: Internal Server Error

¿ Tenéis alguna idea ?

¿ Cuál es la configuración ideal ?

¿ Que parámetros me aconsejáis modificar para solucionar este problema ?

Un saludo y muchas gracias.