2012-11-12 12 views
8

Come posso trovare il percorso del file httpd.conf su apache (PHP)? Non so se il mio script verrà eseguito in Windows Apache o Linux, ho bisogno di sapere dove posso trovare questo file per trovare un parametro da lì. Grazie!Come posso sapere dove si trova il file httpd.conf?

+0

uno sguardo nel file php.ini –

risposta

4

Guarda l'inizio dell'output che ottieni da phpinfo(), i fodlers di configurazione di base di apache sono mostrati lì. Quindi, più semplice è quello di rendere uno script php banale e chiamarlo una volta:

<?php phpinfo(); ?> 

Allo stesso modo è anche possibile interrogare direttamente queste impostazioni. Controlla la documentazione!

+0

Ciao, non sembrano essere in grado di interrogare tutte le impostazioni che sono visualizzate in phpinfo() ;. Come nella sezione apache2handler c'è Server Root che fornisce C: /AppServ/Apache2.2 che è esattamente ciò di cui ho bisogno. Ma ini_get ('Server Root'); non restituisce nulla .. – user1700262

+0

Questo è davvero corretto, puoi solo interrogare i comandi/impostazioni ini di php. Forse puoi usare gli apach mod_info? http://httpd.apache.org/docs/current/mod/mod_info.html – arkascha

+0

Ah, e ovviamente puoi 'raschiare' quell'impostazione dall'output html che ottieni da 'phpinfo()' usando una semplice regex. – arkascha

0

se si utilizza XAMPP il file sarebbe in questo dir xampp \ apache \ conf

22

Penso che non sia esposto a PHP. Run httpd -V nel terminale e lo troverete lì (nome del comando dipende dalla versione del sistema/apache, può essere anche apache -V):

bash-3.2# httpd -V 
Server version: Apache/2.2.22 (Unix) 
Server built: Aug 24 2012 17:16:58 
Server's Module Magic Number: 20051115:30 
Server loaded: APR 1.4.5, APR-Util 1.3.12 
Compiled using: APR 1.4.5, APR-Util 1.3.12 
Architecture: 64-bit 
Server MPM:  Prefork 
    threaded:  no 
    forked:  yes (variable process count) 
Server compiled with.... 
-D APACHE_MPM_DIR="server/mpm/prefork" 
-D APR_HAS_SENDFILE 
-D APR_HAS_MMAP 
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) 
-D APR_USE_FLOCK_SERIALIZE 
-D APR_USE_PTHREAD_SERIALIZE 
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT 
-D APR_HAS_OTHER_CHILD 
-D AP_HAVE_RELIABLE_PIPED_LOGS 
-D DYNAMIC_MODULE_LIMIT=128 
-D HTTPD_ROOT="/usr" 
-D SUEXEC_BIN="/usr/bin/suexec" 
-D DEFAULT_PIDLOG="/private/var/run/httpd.pid" 
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status" 
-D DEFAULT_LOCKFILE="/private/var/run/accept.lock" 
-D DEFAULT_ERRORLOG="logs/error_log" 
-D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types" 
-D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"  <-- HERE IT IS 

ma se si desidera solo conoscere il valore di una variabile di configurazione poi phpinfo(), getenv() o apache_getenv() dovrebbe essere abbastanza

+1

La migliore risposta finora. Ma ci sono altri problemi: 1) Apache potrebbe non essere nel percorso di sistema 2) L'istanza di Apache potrebbe non utilizzare valori predefiniti - Onestamente, dubito che ne valga la pena. Qualunque sia il problema, ci deve essere un modo migliore per risolverlo rispetto all'analisi dei file delle impostazioni di Apache (sì, di solito ce ne sono più di uno). –

+0

Sì, è vero, ma se mi piacerebbe descrivere come trovare config su ogni configurazione personalizzata dovrei scrivere un libro;) Nella maggior parte dei casi quella soluzione dovrebbe funzionare. – lupatus

+0

Questo è il mio punto: non c'è una soluzione semplice :) –

11

Questo è un modo classico per individuare file httpd.conf:

# find/-name 'httpd.conf' -print 

Inoltre è possibile file di individuare il file utilizzando

locate httpd.conf 
+0

Grazie per questo. Ho provato tutte le altre soluzioni su questo thread e un altro paio, ma ho mantenuto "conf/httpd.conf" (un percorso relativo). L'utilizzo del comando 'find' era l'unico modo per ottenere il percorso assoluto per il file di configurazione. – SpencerD

2

httpd -V

Sarà spettacoli tutte le impostazioni compilazione, nel bel mezzo dei risultati troverete:

  • La directory radice Apache :/usr/local/apache
  • Percorso file di configurazione Apache dalla directory principale: conf/httpd.conf

Apache file di configurazione: /usr/local/apache/conf/httpd.conf

[email protected] [~]# httpd -V Server version: Apache/2.4.16 (Unix) Server built: Dec 15 2015 10:01:02 Cpanel::Easy::Apache v3.32.6 rev9999 Server's Module Magic Number: ... Server loaded: APR 1.5.2, APR-UTIL 1.5.4 Compiled using: APR 1.5.2, APR-UTIL 1.5.4 Architecture: 64-bit Server MPM: prefork threaded: no forked: yes (variable process count) Server compiled with.... -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV6 (IPv4-mapped addresses disabled) -D APR_USE_SYSVSEM_SERIALIZE -D APR_USE_PTHREAD_SERIALIZE -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=256 -D HTTPD_ROOT="/usr/local/apache" -D __SUEXEC_BIN="/usr/local/apache/bin/suexec" -D DEFAULT_PIDLOG="logs/httpd.pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="conf/mime.types" -D SERVER_CONFIG_FILE="conf/httpd.conf"