Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何找到httpd.conf文件的位置?_Php_Apache - Fatal编程技术网

Php 如何找到httpd.conf文件的位置?

Php 如何找到httpd.conf文件的位置?,php,apache,Php,Apache,如何在apache(PHP)上找到httpd.conf文件的路径?我不知道我的脚本是在windows apache还是linux中运行,我需要知道在哪里可以找到这个文件,以便从那里找到一个参数。谢谢 看看从phpinfo()获得的输出的开头,基本的apache配置fodler显示在那里。最简单的方法是制作一个简单的php脚本并调用一次: <?php phpinfo(); ?> 同样,您也可以直接查询这些设置。检查文档 如果您正在使用xampp 如果该文件未在phpinfo()中

如何在apache(PHP)上找到httpd.conf文件的路径?我不知道我的脚本是在windows apache还是linux中运行,我需要知道在哪里可以找到这个文件,以便从那里找到一个参数。谢谢

看看从phpinfo()获得的输出的开头,基本的apache配置fodler显示在那里。最简单的方法是制作一个简单的php脚本并调用一次:

<?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