php - pancreatitis - mod_fcgid
Restablecimiento de conexión por pares: mod_fcgid: error al leer datos del servidor FastCGI (15)
Tengo problemas con PHP, donde mi aplicación está intentando ejecutar un archivo de copia de seguridad de php y de repente aparece el código HTTP Error 500. He revisado los registros y esto es lo que dice.
[Mar 28 ago 14:17:28 2012] [advertir] [cliente xxxx] (104) Restablecimiento de conexión por pares: mod_fcgid: error al leer datos del servidor FastCGI, referer: http://example.com/backup/backup.php
[Mar 28 de agosto, 14:17:28 2012] [error] [cliente xxxx] Cabeceras prematuras del script: backup.php, referer: http://example.com/backup/backup.php
¿Alguien sabe cómo arreglar esto? Estoy realmente atrapado aquí y no puedo encontrar una solución en internet.
Espero que alguien pueda compartir su conocimiento.
Gracias. James
¡Aumenté el tiempo de ejecución máximo a 600 segundos de trabajo!
Como ya se mencionó, esto podría estar sucediendo debido a problemas de permisos fcgi manejador. Si usa suexec, no olvide verificar si apache tiene habilitado este módulo.
El famoso script Moodle "replace.php" también puede generar esta situación. Para mí tardaba años en ejecutarse y luego fallaba con un mensaje de 500 en el navegador y también con el mensaje de error anterior en mi archivo de registro de errores de apache.
Seguí la respuesta @ james-wise: FcgidBusy
se describe de forma legible en la documentación de Apache . Intenté esto: duplicó la cantidad de tiempo que apache le daría a mi script para ejecutarse, insertando la siguiente línea en /etc/apache2/mods-available/fcgid.conf
FcgidBusyTimeout 600
Luego reinicié Apache e intenté ejecutar mi script replace.php nuevamente.
Afortunadamente, esta vez, la instancia del script se ejecutó por completo, por lo que para mi propósito, esto sirvió como solución.
En las versiones de CentOS, suexec está compilado para ejecutarse solo en / var / www. Si intenta establecer un DocumentRoot en otro lugar, debe recompilarlo: el error en el registro de Apache es: (104) Restablecimiento de la conexión por pares: mod_fcgid: error al leer los datos del servidor FastCGI Cabeceras prematuras del final del script: php5.fcgi
Encontré esto mientras depuraba un error relacionado con virtualmin / apache.
En mi caso, estoy ejecutando virtualmin y tenía en mi máquina virtual php.ini safe_mode = On.
En el registro de errores de mi máquina virtual, obtenía el restablecimiento de la conexión fcgi por pares: mod_fcgid: error al leer los datos del servidor FastCGI
En mi registro principal de errores de Apache estaba obteniendo: PHP Error fatal: la directiva ''safe_mode'' ya no está disponible en PHP en Desconocido en la línea 0
En mi caso, simplemente configuro safe_mode = Off en mi php.ini y reinicié Apache.
.com/questions/18683177/where-to-start-with-deprecated-directive-safe-mode-on-line-0-in-apache-error
Marque / var / lib / php / session y sus permisos. El usuario debe poder escribir este directorio para que la sesión pueda almacenarse
No en este caso pregunta preguntas, pero a menudo:
¿Qué significa el error "final prematuro de encabezados de scripts" ?
Ese error significa que la llamada FCGI se cerró inesperadamente.
En algunos casos, significa que el script "backup.php" se bloqueó.
¿Cómo arreglar esto?
Si el fallo de un script fue la causa, arregle el script para que no se cuelgue. Entonces este error también se soluciona. Para averiguar si y por qué un script se bloquea, debe depurarlo. Por ejemplo, puede consultar el registro de errores de PHP. Los errores registrados en STDERR normalmente entran en el controlador de errores del FCGI.
Pude resolver esto agregando FcgidBusyTimeout . Por si acaso, si alguien tiene un problema similar conmigo.
Aquí está mi configuración en mi apache.conf:
<VirtualHost *:80>
.......
<IfModule mod_fcgid.c>
FcgidBusyTimeout 3600
</IfModule>
</VirtualHost>
Solo instale php5-cgi en debian
sudo apt-get install php5-cgi
en Centos
sudo yum install php5-cgi
Tenía errores muy similares en los archivos de registro de Apache2:
(104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
Premature end of script headers: phpinfo.php
Después de revisar los scripts de envoltura y la configuración de Apache2, me di cuenta de que / var / www / no tenía permisos correspondientes. Por lo tanto, los scripts FCGId Wrapper no se podían leer en absoluto.
ls -la /var/www
drwxrws--- 5 www-data www-data 4096 Oct 7 11:17 .
Para mi escenario, se requería chmod -o+rx /var/www
por supuesto, ya que los usuarios de SuExec no son miembros del grupo de usuarios www-data
, y por supuesto no deberían ser miembros por razones de seguridad.
Tengo el mismo problema (con Plesk 12 instalado). Sin embargo, cuando cambié de ejecutar PHP como FastCGI a Apache Module, el sitio web funcionó.
Comprobé mi registro de suexec:
$ cd /var/log/apache2/
$ less suexec.log
Cuando encuentres algo como esto:
[2015-03-22 10:49:00]: directory is writable by others: (/var/www/cgi-bin/cgi_wrapper)
[2015-03-22 10:49:05]: uid: (10004/gb) gid: (1005/1005) cmd: cgi_wrapper
prueba estos comandos
$ chown root:root /var/www/cgi-bin/cgi_wrapper
$ chmod 755 /var/www/cgi-bin/cgi_wrapper
$ shutdown -r now
como root
Espero que pueda ayudarte.
Tuve el mismo problema con las secuencias de comandos de larga ejecución con los mensajes de error "Cabeceras prematuras de script: index.php" y "Restablecimiento de conexión por pares: mod_fcgid: error al leer datos del servidor FastCGI" en error_log. Después de horas de prueba, esto me ayuda (CentOS 6, PHP-FPM 7, Plesk 12.5.30):
edite el archivo de configuración:
/etc/httpd/conf.d/fcgid.conf
Establezca un tiempo de ejecución más alto. En mi caso 600 segundos
crea la nueva entrada:
FcgidBusyTimeout 600
adaptar las siguientes entradas:
FcgidIOTimeout 600
FcgidConnectTimeout 600
reiniciar httpd:
servicio de reinicio de httpd
Tuve el mismo problema con una solución diferente y simple.
Problema
Instalé PHP 5.6 siguiendo la respuesta aceptada a esta pregunta en Ask Ubuntu . Después de usar Virtualmin para cambiar un servidor virtual en particular de PHP 5.5 a PHP 5.6, recibí un error de 500 Internal Server y tuve las mismas entradas en el registro de errores de apache:
[Tue Jul 03 16:15:22.131051 2018] [fcgid:warn] [pid 24262] (104)Connection reset by peer: [client 10.20.30.40:23700] mod_fcgid: error reading data from FastCGI server
[Tue Jul 03 16:15:22.131101 2018] [core:error] [pid 24262] [client 10.20.30.40:23700] End of script output before headers: index.php
Porque
Simple: no php5.6-cgi
paquete php5.6-cgi
.
Fijar
Instalar el paquete y volver a cargar apache resolvió el problema:
sudo apt-get install php5.6-cgi
si está utilizando PHP 5.6sudo apt-get install php5-cgi
si está usando una versión PHP 5 diferentesudo apt-get install php7.0-cgi
si está utilizando PHP 7
A continuación, use el service apache2 reload
para aplicar la configuración.
Tuve este problema y me di cuenta de que el archivo cgi-bin / php-fcgi no tenía derechos de ejecución.
Tenía el modo 644 mientras que debería tener el modo 755.
Configurar el modo correcto era imposible (probablemente porque el archivo se abrió o algo así), así que copié ese archivo de otro directorio de dominio donde ya tenía los derechos correctos establecidos y eso solucionó todo.
si desea instalar una versión de PHP <5.3.0, debe reemplazar
--enable-cgi
con:
--enable-fastcgi
en su declaración ./configure
, extracto del documento de php.net:
--enable-fastcgi
Si esto está habilitado, el módulo CGI se compilará con soporte para FastCGI también. Disponible desde PHP 4.3.0
A partir de PHP 5.3.0 este argumento ya no existe y está habilitado por --enable-cgi en su lugar. Después de la compilación, el ./php-cgi -v
debería verse así:
PHP 5.2.17 (cgi-fcgi) (built: Jul 9 2013 18:28:12)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
AVISO EL (cgi-fcgi)