我怎么知道Apache正在使用哪个configuration文件?

我试图在Mac OS X上设置虚拟主机。我一直在修改httpd.conf并重新启动服务器,但一直没有运行它的工作。 此外,我注意到它没有提供httpd.conf(Libraries / WebServer / Documents)中提到的DocumentRoot中的文件,而是在不同的目录(/ usr / local / apache2 / htdocs)中提供文件。 我没有看到在httpd.conf中提到的任何地方的这个文件夹。 此外,PHP的作品,但“LoadModule php5_module”行被注释掉。 这使我认为它使用另一个.conf文件。 我怎样才能找出哪个configuration实际上被加载?

更新:我刚刚删除了httpd.conf和Apache重启后的行为相同,所以它绝对没有使用它!

    使用任何* nix应用程序,最简单的方法是查询二进制文件本身。 在httpd的情况下,我想这个过程是这样的:

    $ whereis httpd /usr/sbin/httpd $ /usr/sbin/httpd -V Server version: Apache/2.2.11 (Unix) Server built: Jun 17 2009 14:55:13 Server's Module Magic Number: 20051115:21 Server loaded: APR 1.2.7, APR-Util 1.2.7 Compiled using: APR 1.2.7, APR-Util 1.2.7 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" 

    正如你所看到的 – 我的OS X说这个二进制文件,如果没有指示,将使用configuration文件: /private/etc/apache2/httpd.conf

    如果这没有帮助,也许克里斯托弗的发现build议是下一步。

    还有一个关于这个服务器错误的问题。 如果您使用的是基于Debian的服务器,则可以使用apache2ctl来确定正在使用哪个configuration文件:

     apache2ctl -V 

    更多关于这个:

    如何找出apache在运行时使用的httpd.conf

    尝试

     ps ax | grep httpd 

    你应该(可能)得到像这样的输出

     1633 ?? Ss 0:00.21 /usr/sbin/httpd -f /etc/httpd.conf 

    另外,你是如何重新启动服务器? 只是好奇,如果你不知道怎么重新读取configuration文件。

    一些事情。 首先,检查Apache的启动脚本。 我假设它在/etc/init.d/httpd? 对于OSX,它是/ Library / LaunchDaemons? 这可能包括工作目录或类似的信息。

    你也可以用dtruss来debugging正在运行的进程本身。 您可以使用dtruss -p <pid>连接到正在运行的进程。 那么如果你是HUP的话,你可能会仔细研究输出,看看它从哪里抓取它的configuration。 或者,直接通过调用dtruss来启动Apache。 dtruss start_apache_command

    第三,你总是可以为“httpd.conf”做一个系统范围的查找。 find / -name httpd.conf

    – 克里斯托弗·卡雷尔

    因为一些configuration使用服务器应用程序,酿造或任何,因为一个衬里FTW:

     $(ps ax -o comm | grep -m 1 httpd) -V | grep SERVER_CONFIG_FILE 

    该命令执行以下操作:

    • find一个活动的httpd进程
    • 输出configuration信息
    • grepconfiguration文件

    testing在塞拉利昂和埃尔卡皮坦