Eso es lo mismo que pregunté en un post hace dos días, pero al parecer no me expliqué bien y tu has resumido en palabras lo que yo quería :).
acabo de averiguar como ya hacer lo que estás pidiendo. Así que lo contestaré aquí y no en mi post.
Claro que es posible mi amigo! lo único que tienes que hacer es desde PHP editar el archivo de zonas que se encuentra en /var/named
y le adieres la siguiente linea (desde el script claro con fopen):
Cita: subdominio.tudominio.com. IN A xxx.xxx.xxx.xxx
donde xxx.xxx.xxx.xxx es la dirección de tu server
o puedes hacerlo con CNAME:
Cita: subdominio.tudominio.com. IN CNAME dominio.com
luego obtienes el PID de bind y le mandas un SIGHUP, cómo lo obtienes? pues lees el fichero: /var/run/named/named.pid.
Luego de obtener el PID haces lo que te dije enviarle un SIGHUP que provocara que el proceso principal finalize sus procesos hijo y vuelva a leer su archivo de configuración
Código:
$update_subdominio = shell_exec("kill -s SIGHUP pid_del_bind");
y lo mismo con apache:
abres con fopen el archivo httpd.conf de tu apache y le adieres un host virtual con la directiva <VirtualHost>
tan tan
Código:
<VirtualHost 192.168.1.1>
DocumentRoot /var/www/subdominio
ServerName subdominino.dominio.com
ErrorLog /var/www/vhosts/logs/subdomino/error_log
CustomLog /var/www/vhosts/logs/subdomino/access_log common
</VirtualHost>
ya luego vuelves a hacer lo mismo que hiciste antes con el bind, mandarle un sighup, lees el fichero /var/run/httpd.pid y de ahi obtienes el pid :).
Espero haberme explicado bien :)
al principio pensé que era dificil hacer esto desde PHP pero veo que no..
pero deberás de buscar otra forma, ya que shell_exec, system, permitidos, son peligrosos, una de esos tus clientes tienen un include sin filtrar datos de entrada y algun curioso de le ocurre meter su codigo PHP y tan tan ejecuta el system o el shell_exec y te saca una shell en PHP...
(así que recomendable deshabilitarlos)
saludos.