Determine o arquivo ofensivo ao executar o configtest do Apache

1

Existe uma maneira de determinar o arquivo incorreto ao executar https configtest .

Por exemplo, em vez de:

Warning: DocumentRoot [/var/www/whatever.com/webroot] does not exist
Warning: DocumentRoot [/var/www/example.com/webroot] does not exist

Eu pude ver:

Warning: DocumentRoot [/var/www/whatever.com/webroot] does not exist in /etc/httpd/conf.d/file.conf
Warning: DocumentRoot [/var/www/example.com/webroot] does not exist in /etc/httpd/conf.d/other_file.conf

Revi ajuda / man e pesquisei, mas não consegui encontrar uma opção ou comando equivalente.

    
por Jason McCreary 20.06.2014 / 17:10

3 respostas

2

Infelizmente, o apachectl não oferece essa informação.

Sua melhor solução é simplesmente usar grep para procurar os arquivos de configuração pela string mostrada na mensagem de erro.

    
por 20.06.2014 / 17:22
1

Só para adicionar um pouco de informação extra, o script apachectl não faz muito por si só, invoca o binário httpd com um sinalizador:

 configtest)
    $HTTPD -t
    ERROR=$?
    ;;

Portanto, isso deve ser abordado no próprio núcleo.

Isso foi corrigido em apache-2.4 :

# systemctl status httpd
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: failed (Result: exit-code) since Fri 2014-06-20 20:36:01 CEST; 1s ago
  Process: 3331 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
  Process: 3329 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 3329 (code=exited, status=1/FAILURE)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"

Jun 20 20:36:01 foo.com httpd[3329]: AH00526: Syntax error on line 15 of /etc/httpd/conf.d/012-some-vhost.conf:
Jun 20 20:36:01 foo.com httpd[3329]: Invalid command 'UseCanonicalNamex', perhaps misspelled or defined by a module not included in the server configuration
Jun 20 20:36:01 foo.com systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Jun 20 20:36:01 foo.com systemd[1]: Failed to start The Apache HTTP Server.
Jun 20 20:36:01 foo.com systemd[1]: Unit httpd.service entered failed state.

O código relevante está em server/config.c .

    
por 20.06.2014 / 20:59
0

Baseado no este tutorial verifique /etc/apache2/extra/httpd-vhosts.conf . Isso funcionou na minha máquina que é o OSX 10.13 usando o Apache 2.4.

    
por 21.06.2018 / 09:00

Tags