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.
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
Gracias por ampliar la información Pablo, muy útil.
A partir de la versión 0.7.0 hay que ponerlo entre comillas:
;Handler for php-scripts
x-httpd-php=»php:/usr/bin/php-cgi»
gracias alex eso ultimo lo encontré en la ayuda de suPHP lastima que no encontrara tu blog antes :(
Me alegro que te haya sido de utilidad.
Saludos!
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.
ln –s /usr/bin/php5-cli /usr/bin/php5-cgi
ln: target «/usr/bin/php5-cgi» is not a directory
Nando, si te fijas, estás haciendo un enlace simbólico a sí mismo. Ésto, no tiene sentido.
Un saludo.