APACHE配置ServerRoot 的问题? 如何得到 apache 的 Server Root

jackxiang 2010-6-16 12:20 | |
查阅了很多资料,对于apache中ServerRoot的解释基本都是这样的:ServerRoot用于指定守护进程httpd的运行目录,httpd在启动之后将自动将进程的当前目录改变为这个目录,因此如果设置文件中指定的文件或目录是相对路径,那么真实路径就位于这个ServerRoot定义的路径之下。

1、安装完apache后,我的apache安装目录如下d:\MyPHP\apache2.2\,查看httpd.conf文件,发现ServerRoot定义的目录为:ServerRoot "d:\MyPHP\apache2.2\",不明白的是,apache的进程文件httpd.exe是位于d:\MyPHP\apache2.2\bin\的啊?和官方的解释又不一致,ServerRoot是定义的目录具体是以什么为标准定义的?
2、同样以我安装的为例,假如我把ServerRoot的定义直接改为ServerRoot ".",那这时指定的具体目录又是哪个?

我也是初学者,配置的环境是LAMP,和你的不大一样.但我感觉官方说的和你说的没有矛盾.http的运行目录,它的安装目录这是两个概念.比如DOS下的dir指令,你可以在许多路径下运行它,但它的安装目录肯定只有一个的.进程在运行中是可以改变运行目录的,因此你在设置文件中指定的是相对路径,那就是在d:\MyPHP\apache2.2\下,而不是d:\MyPHP\apache2.2\bin\下.
对于问题3,我个人的感觉具体目录应该是d:\MyPHP\apache2.2\bin\,因为我对具体的源代码没有详细阅读,在这里猜测一下,在httpd运行后,它会根据ServerRoot,改变当前运行环境,但你指定是".",所以还是在当前目录.但这么设置可能会引发一些问题或者错误,引起服务器不能正常运行.



print_r($_SERVER);

print_r($_SERVER);
这个可以得到 Document Root
但是我想得到的是  Server Root
比如我的 httpd.conf

ServerRoot = C:/Apache
DocumentRoot= F:/Myweb

用 phpinfo() 可以看见

Configuration File (php.ini) Path         C:\Apache\conf/php.ini

apache2handler
Server Root         C:\Apache\

_SERVER["DOCUMENT_ROOT"]  F:\Myweb

print_r($_ENV);这个可以吧

可以考虑将phpinfo的内容保存到缓冲区里然后再用正则匹配不出来。

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/3204/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]