¿Qué son los controladores PHP y por qué son importantes?

Apache no admite de forma nativa scripts PHP sin un módulo especial. El módulo que le dice a Apache cómo manejar los scripts PHP se conoce como un controlador PHP. Sin un módulo configurado correctamente, Apache simplemente le enviará el archivo PHP como descarga, ya que no sabe qué más hacer.

¿Qué controladores admiten cPanel y Plesk con Apache?

cPanelPlesk
DSO/mod_phpApache Module/mod_php
CGICGI
FCGI/FastCGIFCGI/FastCGI
PHP-FPMPHP-FPM
suPHP-- (CGI / suExec habilitado)
LSAPI-- (a menos que esté instalado LiteSpeed Web Server)

En términos generales, ¿cómo funciona cada controlador PHP y cuáles son las ventajas y desventajas de trabajar con cada uno de ellos?

Cada módulo proporciona un método diferente para analizar PHP.

DSO/Apache Module

Esto también se conoce como mod_php. Este módulo le permite a Apache analizar y mostrar directamente archivos PHP. Los scripts PHP analizados por mod_php se ejecutan como el mismo usuario que hace el propio Apache (en lugar de la cuenta de usuario que aloja los archivos PHP.

Pros

  • Uno de los controladores más rápidos disponibles.
  • Funciona con módulos mod_ruid2 o mpm_itk.

Contras

  • Solo funciona con una única versión de PHP en servidores cPanel (necesitará usar otros controladores para otras versiones de PHP si los ofrece).
  • Las secuencias de comandos se ejecutan como el usuario de Apache en lugar del propietario del dominio o subdominio. Por ejemplo, en un servidor cPanel, si el script crea un archivo o directorio, ese archivo será propiedad del usuario "nobody", lo que puede causar problemas cuando el propietario de la cuenta va a hacer una copia de seguridad o eliminarlos.

CGI

Significa Common Gateway Interface. Con este controlador, el sistema ejecutará scripts PHP como el usuario propietario del dominio o subdominio.

Pros

  • Las secuencias de comandos se ejecutan como usuario de dominio o subdominio, no como usuario de Apache.

Contras

  • Uno de los controladores más lentos.
  • No funciona bien con el almacenamiento en caché de código de operación PHP.
  • No se pueden poner cambios de configuración de PHP en un archivo .htaccess.

FCGI/FastCGI

FastCGI es una variación del protocolo CGI que proporciona una serie de beneficios sobre el controlador CGI anterior. Con este módulo, el sistema ejecutará scripts PHP como el usuario propietario del dominio o subdominio. Hay algunas diferencias entre mod_fastcgi y mod_fcgid, pero ninguna que sea relevante para el alcance de este artículo.

Pros

  • Las secuencias de comandos se ejecutan como usuario de dominio o subdominio, no como usuario de Apache.
  • Un manejador muy rápido
  • Trabaja con PHP opcode cache.

Contras

  • Este controlador utiliza más memoria que la mayoría de los demás.
  • No se pueden poner cambios de configuración de PHP en un archivo .htaccess.

PHP-FPM

FPM significa FastCGI Process Manager. Es una forma mejorada de implementar el procesamiento FastCGI de PHP. Con este controlador, el sistema ejecutará scripts PHP como el usuario propietario del dominio o subdominio. Cada grupo de FPM puede tener configuraciones independientes.

Pros

  • Las secuencias de comandos se ejecutan como usuario de dominio o subdominio, no como usuario de Apache.
  • Uno de los manejadores PHP mas rapidos.
  • Trabaja con PHP opcode cache.
  • Permite un nivel adicional de flexibilidad por grupo.

Contras

  • Este controlador puede usar más memoria que cualquier otro controlador enumerado aquí, pero eso depende de la cantidad de sitios que usan PHP-FPM y la configuración del grupo de FPM.
  • Puede ser algo más complicado de manejar.
  • No se pueden colocar cambios de configuración de PHP en un archivo .htaccess y algunas directivas solo se pueden cambiar a nivel global.

suPHP

Este controlador fue diseñado específicamente para servir scripts PHP como el propietario del dominio o subdominio que está ejecutando el script PHP. En los servidores cPanel, también está configurado para no permitir la ejecución de archivos con permisos inseguros. cPanel hizo su propia copia de suPHP con las últimas correcciones de seguridad.

Pros

  • Las secuencias de comandos se ejecutan como usuario de dominio o subdominio, no como usuario de Apache.
  • cPanel configura suPHP para que bloquee el acceso o la ejecución de cualquier archivo o directorio con permisos superiores a 755 por seguridad.

Contras

  • El controlador PHP más lento en la mayoría de los casos.
  • El almacenamiento en caché de PHP Opcode no mejora el rendimiento y solo desperdicia memoria.
  • No se pueden poner cambios de configuración de PHP en un archivo .htaccess.

LSAPI

Este controlador implementa el servidor web LiteSpeed (LSWS) SAPI. Este controlador requiere CloudLiunx o LSWS para obtener los máximos beneficios. Con este controlador, el sistema ejecutará scripts PHP como el usuario propietario del dominio o subdominio.

Pros

  • Diseñado para funcionar tan bien o mejor que PHP-FPM bajo ciertas circunstancias.
  • Menos uso de memoria que la mayoría de los otros controladores.
  • Las secuencias de comandos se ejecutan como usuario de dominio o subdominio, no como usuario de Apache.
  • No se requiere configuración especial.
  • Puede leer valores PHP de un archivo .htaccess.

Contras

  • No obtienes todos los beneficios sin comprar un producto comercial de terceros.
  • No es compatible con mod_ruid2 o mpm_itk (pero no debería necesitarlos).

¿Qué controlador PHP debo usar?

El que debe usar depende de los recursos de su servidor y los tipos de sitios PHP que tenga. En cPanel, recomendamos utilizar de forma predeterminada suPHP, LSAPI o FCGI. En Plesk recomendamos FastCGI. Una vez que comprenda cómo funciona PHP-FPM, puede intentar habilitarlo para al menos algunos sitios y ver si ayuda.


¿Cómo cambio el controlador PHP que usa Apache?

No cambie el controlador PHP que está utilizando sin comprender completamente lo que hará el controlador. Si cambia de un controlador que ejecuta scripts como el usuario a uno que no lo hace, o viceversa, es posible que deba ajustar los permisos de algunos archivos o directorios para que Apache pueda acceder a las cosas correctamente.


En cPanel, puede ajustar el controlador PHP en WHM haciendo clic en MultiPHP Manager y entonces selecciona PHP Handler y ajustar el controlador según sea necesario.

La configuración en esta área de cPanel solo se aplica si no ha configurado un sitio para usar PHP-FPM en la página principa de MultiPHP Manager.


En Plesk navegue a Service Plans > Example plan > PHP Settings > run PHP as y seleccione el controlador que desea usar.


Si tiene servicio con HostDime y no está seguro de qué hacer con sus controladores PHP, por favor Contáctenos  para asistencia antes de intentar hacer cualquier cambio.