$ _SERVER ['DOCUMENT_ROOT']和$ _SERVER ['HTTP_HOST'],有时一个工作,有时其他

时间:2017-12-15 07:11:49

标签: php

此行能够获取图像

<img src="<?php echo'http://'.$_SERVER['HTTP_HOST'];?>paper/Mailer/examples/images/phpmailer.gif" alt="">

此行不能

<`img src="<?php echo $_SERVER['DOCUMENT_ROOT'].'paper/Mailer/examples/images/phpmailer.gif';?>" alt="">`

但带有http://的$ _SERVER ['HTTP_HOST']无法获取所需的文件

<?php require 'http://'.$_SERVER['HTTP_HOST'].'/paper/Mailer/class.phpmailer.php'; ?>

但这一行在这里工作正常

<?php require $_SERVER['DOCUMENT_ROOT']."/paper/Mailer/class.phpmailer.php";  ?>

有人可以澄清发生了什么  $_SERVER['HTTP_HOST'] and $_SERVER['DOCUMENT_ROOT'] 如何正确使用它们$_SERVER['DOCUMENT_ROOT'], $_SERVER['HTTP_HOST']。任何方式都不应该都能加载文件?一个人如何只为源和其他工作只需要或包含。我认为目录模式略有不同,都应该做同样的工作。那为什么不呢?

1 个答案:

答案 0 :(得分:0)

最好的解决方法可能就是自己回复打印。 (var_dump($_SERVER);

稍作解释$_SERVER['DOCUMENT_ROOT']将返回服务器路径,即/var/www/...$_SERVER['HTTP_HOST']域名,即www.something.com

当您调用php文件时,

require()将与$_SERVER['DOCUMENT_ROOT']一起使用(只是您正在使用来自服务器的绝对路径)。 <img src="">不会因为您需要从网络上调用它(因此您需要域名$_SERVER['HTTP_HOST'])。