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_limitnuevo sí 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:
- Seleccionar el dominio en el desplegable de la pantalla.
- Cambiar la versión de ese dominio.
- Repetir con cada dominio que se quiera mover. No basta con el principal.
- 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. Unphpinfo()accesible expone la configuración del servidor, así que no puede quedarse ahí. - No fiable:
php -vpor 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.iniprincipal, comodisable_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.