2012-11-12 48 views
8

如何找到apache(PHP)上的httpd.conf文件的路徑?我不知道我的腳本是否會在windows apache或linux中運行,我需要知道在哪裏可以找到這個文件,以便從那裏找到一個參數。謝謝!如何找出httpd.conf文件的位置?

+0

看看到php.ini文件 –

回答

4

看看你從phpinfo()獲得的輸出的開始,那裏顯示了基本的apache配置fodlers。所以,最簡單的就是做一個簡單的PHP腳本,並調用它一次:

<?php phpinfo(); ?> 

同樣你也可以直接查詢這些設置。檢查文檔!

+0

您好,我不似乎能夠查詢所有在phpinfo();中顯示的設置。就像在apache2handler部分中有服務器根目錄,它提供了C:/AppServ/Apache2.2,這正是我需要的。但是ini_get('Server Root');沒有任何迴應。 – user1700262

+0

這確實是正確的,你只能查詢phps自己的ini命令/設置。也許你可以使用apaches mod_info? http://httpd.apache.org/docs/current/mod/mod_info。html – arkascha

+0

啊,顯然你可以通過一個簡單的正則表達式從'phpinfo()'得到的html輸出中'刮'這個設置。 – arkascha

0

如果您使用XAMPP 該文件將在這個目錄XAMPP \ apache的\的conf

22

我認爲它沒有暴露給PHP。 運行httpd -V在終端,你會在那裏找到它(命令名稱取決於你的系統/ Apache的版本,它也可以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 

,但如果你只是想知道一些配置變量的值,則phpinfo()getenv()apache_getenv()應該足夠

+1

迄今爲止的最佳答案。但還有其他問題:1)Apache可能不在系統路徑中2)Apache實例可能沒有使用默認值 - 老實說,我懷疑這是值得的。無論問題出在哪裏,解析Apache設置文件(是的,通常不止一個)都必須有更好的解決方法。 –

+0

是的,這是真的,但如果我想描述如何找到配置每個自定義配置,我將不得不寫一本書;)在大多數情況下,解決方案應該工作。 – lupatus

+0

這就是我的觀點:沒有簡單的解決方案:) –

11

這是定位httpd.conf文件中一個經典的方式:

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

你也可以文件中找到使用文件

locate httpd.conf 
+0

感謝你。我嘗試了這個線程和其他一些其他解決方案的所有其他解決方案,但我一直在獲取''conf/httpd.conf''(相對路徑)。使用'find'命令是我可以獲得配置文件絕對路徑的唯一方法。 – SpencerD

2

的httpd -V

它會顯示所有編譯設置,在結果中,你會發現:

  • Apache的根目錄:/usr/local/apache
  • Apache配置文件路徑從根目錄:conf/httpd.conf

的Apache的conf文件:/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"

相關問題