Skip to main content

Versiones de PHP y php.ini en cuentas con varios dominios

Una cuenta de Directadmin puede alojar varios dominios. Cuando se quiere que cada uno use una versión distinta de PHP, o valores distintos de php.ini, aparece una confusión muy habitual: unos ajustes se propagan solos a todos los dominios de la cuenta y otros no.

No es un fallo del panel. Son dos ámbitos distintos, y conviene tenerlos claros antes de pelearse con la configuración.

El síntoma típico

Se cambia la versión de PHP y el memory_limit en el dominio principal de la cuenta. Al ir al segundo dominio, el panel avisa de que toma la configuración del principal. Y entonces se observa algo aparentemente incoherente:

  • El memory_limit nuevo aparece en el segundo dominio, sin haberlo tocado ahí.
  • La versión de PHP no: el segundo dominio sigue con la versión antigua.

De ahí la sensación de que el panel "no hace caso". Lo que ocurre es que cada cosa se aplica a un nivel diferente.

Los dos ámbitos

La versión de PHP es por dominio

Cada dominio guarda su propia selección de versión, de forma independiente. Cambiarla en el dominio principal no la cambia en el resto: hay que hacerlo dominio por dominio.

Los valores del php.ini del panel son por cuenta

Directadmin crea un único pool de PHP-FPM por usuario, no uno por dominio. Todos los dominios de la cuenta que usen la misma versión de PHP comparten ese pool.

Cuando desde el panel se ajusta memory_limit, upload_max_filesize, max_execution_time y demás, el valor acaba escrito en ese pool como php_value. Por eso se aplica a todos los dominios de la cuenta a la vez, aunque el formulario se haya abierto teniendo seleccionado un dominio concreto.

Cambiar la versión de PHP de un dominio

Desde el panel, en modo usuario, en la pantalla de configuración de PHP. El proceso paso a paso, con capturas, está en Configurar PHP en un servidor con Directadmin.

Lo importante:

  1. Seleccionar el dominio en el desplegable de la pantalla.
  2. Cambiar la versión de ese dominio.
  3. Repetir con cada dominio que se quiera mover. No basta con el principal.
  4. Esperar unos instantes: el panel regenera la configuración del servidor web y recarga PHP-FPM.

Cómo comprobar de verdad qué versión se está usando

Es la parte donde más se falla, porque hay varias formas de mirar y casi todas engañan.

  • Fiable: una página en el propio dominio con phpinfo(), consultada por navegador, y borrada inmediatamente después. Un phpinfo() accesible expone la configuración del servidor, así que no puede quedarse ahí.
  • No fiable: php -v por SSH. Devuelve la versión por defecto del servidor o la del usuario, no la del dominio, que es la que usa la web.
  • No fiable: el aviso de versión de PHP del panel de WordPress u otros gestores. Suelen cachear ese dato y tardan en refrescarlo.

Valores de php.ini distintos para cada dominio

Sí es posible, pero no desde el panel: requiere acceso de administrador al servidor.

El mecanismo son las secciones [HOST=] en un fichero .ini dentro de /usr/local/phpXX/lib/php.conf.d/:

[HOST=segundo-dominio.example]
memory_limit = 512M
upload_max_filesize = 128M

Los ficheros de ese directorio se cargan por orden alfabético, de ahí que se numeren. Después hay que reconstruir la configuración web:

da build rewrite_confs

Dos detalles verificados que conviene conocer:

  • La sección [HOST=] prevalece sobre el valor que el panel haya dejado en el pool de la cuenta. Es decir, sirve para dar a un dominio concreto un valor distinto del que tiene el resto de la cuenta.
  • No todas las directivas admiten esto. Las que solo pueden fijarse una vez en el php.ini principal, como disable_functions, no se pueden sobrescribir por esta vía. Ese caso concreto está tratado en Cambios especificados en el php.ini disable_functions por dominio.

Referencia oficial: Per-domain settings for PHP.

Resumen

Qué se quiere cambiar Ámbito Quién puede hacerlo
Versión de PHP Por dominio El propio usuario, desde el panel
memory_limit y similares del panel Toda la cuenta El propio usuario, desde el panel
memory_limit y similares para un solo dominio Por dominio Solo el administrador del servidor
Aviso

Esta documentación y su contenido no implica que funcione en tu caso o en determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido se entrega tal y como está, sin que ello implique ninguna obligación ni responsabilidad por parte de Castris.

Si necesitas soporte profesional puedes contratar con Castris soporte profesional.