Php 如何找到httpd.conf文件的位置?
如何在apache(PHP)上找到httpd.conf文件的路径?我不知道我的脚本是在windows apache还是linux中运行,我需要知道在哪里可以找到这个文件,以便从那里找到一个参数。谢谢 看看从phpinfo()获得的输出的开头,基本的apache配置fodler显示在那里。最简单的方法是制作一个简单的php脚本并调用一次:Php 如何找到httpd.conf文件的位置?,php,apache,Php,Apache,如何在apache(PHP)上找到httpd.conf文件的路径?我不知道我的脚本是在windows apache还是linux中运行,我需要知道在哪里可以找到这个文件,以便从那里找到一个参数。谢谢 看看从phpinfo()获得的输出的开头,基本的apache配置fodler显示在那里。最简单的方法是制作一个简单的php脚本并调用一次: <?php phpinfo(); ?> 同样,您也可以直接查询这些设置。检查文档 如果您正在使用xampp 如果该文件未在phpinfo()中
<?php phpinfo(); ?>
同样,您也可以直接查询这些设置。检查文档 如果您正在使用xampp
如果该文件未在phpinfo()中列出,则该文件将位于该目录xampp\apache\conf中,可能使用
apache_getenv(/* variable */)
我认为它没有暴露在PHP中。 在终端中运行
httpd-V
,您将在那里找到它(命令名取决于您的系统/apache版本,也可以是apache-V
):
bash-3.2#httpd-V
服务器版本:Apache/2.2.22(Unix)
服务器构建时间:2012年8月24日17:16:58
服务器模块幻数:20051115:30
已加载服务器:4月1.4.5日,4月1.3.12日
使用:APR 1.4.5、APR Util 1.3.12编译
架构:64位
服务器MPM:预工作
A:没有
分叉:是(可变进程计数)
使用…编译的服务器。。。。
-D APACHE_MPM_DIR=“server/MPM/prefork”
-D APR\u已发送文件
-4月4日有MMAP
-D APR\u已启用IPV6(IPv4映射地址)
-D APR\u使用\u群集\u序列化
-D APR_使用线程_序列化
-D单个\u侦听\u未序列化\u接受
-你有别的孩子吗
-是否有可靠的管道日志
-D动态模块极限=128
-D HTTPD_ROOT=“/usr”
-D SUEXEC_BIN=“/usr/BIN/SUEXEC”
-D DEFAULT_PIDLOG=“/private/var/run/httpd.pid”
-D DEFAULT_SCOREBOARD=“logs/apache_运行时状态”
-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”这是查找httpd.conf文件的经典方法:
# find / -name 'httpd.conf' -print
此外,您还可以使用查找文件
locate httpd.conf
httpd-V
它将显示所有编译设置,在结果中间你会发现:
- Apache根目录:
/usr/local/Apache
- 根目录中的Apache配置文件路径:
conf/httpd.conf
Apache配置文件:/usr/local/Apache/conf/httpd.conf
root@host[~]#httpd-V
服务器版本:Apache/2.4.16(Unix)
服务器构建日期:2015年12月15日10:01:02
Cpanel::Easy::apachev3.32.6 rev9999
服务器的模块幻数:。。。
已加载服务器:APR 1.5.2,APR-UTIL 1.5.4
编译使用:APR 1.5.2,APR-UTIL 1.5.4
架构:64位
服务器MPM:预工作
A:没有
分叉:是(可变进程计数)
使用…编译的服务器。。。。
-D APR\u已发送文件
-4月4日有MMAP
-D APR\u已禁用IPV6(IPv4映射地址)
-D APR\u USE\u SYSVSEM\u序列化
-D APR_使用线程_序列化
-D单个\u侦听\u未序列化\u接受
-你有别的孩子吗
-是否有可靠的管道日志
-D动态模块极限=256
-D HTTPD_ROOT=“/usr/local/apache”
-D_uusuexec_BIN=“/usr/local/apache/BIN/SUEXEC”
-D DEFAULT_PIDLOG=“logs/httpd.pid”
-D DEFAULT_SCOREBOARD=“logs/apache_运行时状态”
-D DEFAULT_ERRORLOG=“logs/error_log”
-D AP\u TYPES\u CONFIG\u FILE=“conf/mime.TYPES”
-D SERVER_CONFIG_FILE=“conf/httpd.conf”
目前为止最好的答案。但还有其他问题:1)Apache可能不在系统路径中2)Apache实例可能没有使用默认值——老实说,我怀疑这是否值得。不管问题是什么,一定有比解析Apache设置文件更好的解决方法(是的,通常不止一个)。是的,没错,但如果我想描述如何在每个自定义配置上查找配置,我必须写一本书;)在大多数情况下,这个解决方案应该是有效的。apache2-V为我显示了conf文件的位置。但是apache2-v实际上向我显示了版本信息。大多数小写的v
被分配到版本或详细模式(当然没有这样的规则),我的答案包含大写的v
在我的系统上,服务器配置文件是相对于HTTPD\u ROOTHi的,我似乎无法查询phpinfo()中显示的所有设置;。与apache2handler部分一样,服务器根提供了C:/AppServ/Apache2.2,这正是我所需要的。但是ini_get('Server Root');不返回任何内容。这确实正确,您只能查询phps自己的ini命令/设置。也许你可以使用apaches mod_info?啊,很明显,您可以通过使用一个简单的正则表达式从phpinfo()
获得的html输出中“刮取”该设置;没有打印出来?$info=file\u get\u contents('http://localhost/debug/info.php');
或脚本中有phpinfo()
调用的任何地方。请注意,file_get_内容接受URL和文件路径。不太优雅,但很管用。谢谢你。我在这个线程和其他几个线程上尝试了所有其他解决方案,但我一直得到“conf/httpd.conf”
(相对路径)。使用find
命令是获取配置文件绝对路径的唯一方法。
locate httpd.conf