suPHP: «Premature end of script headers» en el error_log

Si acabáis de montar un servidor apache con suPHP y al tratar de ejecutar cualquier PHP el navegador muestra «Internal Server Error«, y el log de apache muestra «Premature end of script headers» lo más probable es que hayáis instalado la versión cliente (CLI) de php en vez de la versión CGI (php-cgi). Para solventar esto debéis copiar el binario de php CGI en donde se supone debe estar instalado el binario de php (donde vaya apache a buscarlo vamos).

En mi caso, en un servidor CentOS el binario php-cgi estaba aquí:

/usr/bin/php-cgi

Y apache utilizaba el binario de php-cliente:

/usr/bin/php

Bien, entonces he guardado un backup del cliente y he creado un enlace simbólico para que /usr/bin/php sea lo mismo que /usr/bin/php-cgi, podéis también sobreescribirlo, lo que queráis. Con este cambio el problema debería quedar solucionado.

9 comentarios en “suPHP: «Premature end of script headers» en el error_log

  1. Hola, otra de las opciones y por ahi hasta un poco mas prolija es configurar el suPHP para que use el php-cgi en vez de php (del cli)

    Para ello en el archivo /etc/suphp.conf remplazamos

    [handlers]
    ;Handler for php-scripts
    x-httpd-php=php:/usr/bin/php

    Por:

    [handlers]
    ;Handler for php-scripts
    x-httpd-php=php:/usr/bin/php-cgi

  2. Hola a todos, éste blog es bastante interesante lo voy a seguir.

    Tengo una consulta acerca de ésto ojala me puedan echar un cable, sucede que tengo un servidor con suPHP activado, y luego en una de mis cuentas de hosting tengo una web en joomla, cuando intento abrirla me bota un error interno, no se si me podrán echar un cable.

    Gracias de antemano.

    • Hola Enzo,

      Revisa que no tengas ninguna carpeta con permisos 777, que los propietarios de los ficheros/carpetas sean los correctos y que en los ficheros .htaccess no tengas ninguna directiva del tipo php_flag.

      No obstante, lo mejor es que mires el log de error de esa web y te dirá cual es el error exacto.

      Un saludo.

  3. ln –s /usr/bin/php5-cli /usr/bin/php5-cgi
    ln: target «/usr/bin/php5-cgi» is not a directory

Comments are closed.