Detectar em um script se a raiz do apache2 é / var / www ou / var / www / html

2

O Apache2 recentemente mudou o diretório raiz padrão de / var / www para / var / www / html, o que quebra os scripts que eu distribuo para instalar algum software que eu escrevi. Existe uma maneira confiável de detectar um script que é? Eu preferiria uma solução razoavelmente portátil, digamos uma que rodasse no Linux, no BSD e no MacOS.

Acho que posso verificar a existência do subdiretório html, mas isso não parece muito à prova de balas.

Eu também pensei nisso:

source /etc/apache2/envvars ; apache2 -S

Isso gera uma saída que parece realmente errada:

Main DocumentRoot: "/var/www"

Na verdade, o diretório raiz nesta máquina é / var / www / html.

    
por Ben Crowell 10.07.2014 / 21:06

2 respostas

2

Isso dependerá de quantos hosts virtuais você configurou, mas você certamente poderia adivinhar usando um código como este:

 root=$(rgrep DocumentRoot /etc/apache2/ | awk '{print $NF}' | head -n 1)
 echo $root

Isso localizará a configuração DocumentRoot especificada abaixo de /etc/apache2 e imprimirá a primeira.

Você poderia facilmente usar essa abordagem para ver se encontrou qualquer menção de /var/www/html e usá-la em caso afirmativo.

    
por 10.07.2014 / 21:28
0

Se o seu script é chamado via CGI ou FastCGI, ele deve encontrar a raiz do documento na variável de ambiente DOCUMENT_ROOT .

    
por 10.07.2014 / 21:19