$ _ SERVER [ 'DOCUMENT_ROOT']

时间:2011-10-23 19:39:26

标签: php-5.2

首先,如果你读到这篇文章,请提前感谢你的耐心, - 我是一个相当新的PHP,并且有一个问题,我将尝试解释/描述。

//set default path
///var/www/vhosts/www.mydomain.com/httpdocs/
$url = 'http://mydomain.com/skins/coolblue/tmp';
$url2 = 'http://mydomain.com/skins/coolblue/tmp';
$doc = $_SERVER['DOCUMENT_ROOT'];
$path = '/templates/';
$actual_url = $doc.'/skins/coolblue/tmp'.$path;

(我有一个开发人员最初构建我的网站并配置我的服务器,但他现在已经离开了) 我的网站托管在一个带有plesk控制面板的专用服务器上,所以当我打电话给Godaddy并告诉他们['DOCUMENT_ROOT']的值时,他们给了我 * /var/www/vhosts/www.mydomain.com/的httpdocs / *

我的问题是,我使用动态网址,例如subdomain.mydomain.com(已经配置并正常工作),这反过来确定内容,并且输出来自使用$_SERVER['DOCUMENT_ROOT']的特定脚本如上所述,url始终是www。+++格式的静态URL。我希望网址是动态的。

有没有办法解决这个问题,或者我可以将$ doc = $_SERVER['DOCUMENT_ROOT'];更改为脚本的实际网址并添加动态域变量即http://$subdomain/domain.com吗?我已经尝试了几乎没有运气的路径的每一个变化。你有什么建议吗?顺便说一句,$doc = $_SERVER['DOCUMENT_ROOT'];是必要的,还是开发人员的选择而不是写出路径? - 再次谢谢你

2 个答案:

答案 0 :(得分:1)

如果您正在使用.htaccess文件将子域转发到子文件夹(这是纯粹的猜想),并且实际上有必要使用文件系统路径,您可以在重定向上设置环境变量以利用,例如:

RewriteCond %{HTTP_HOST} subdomain\.site\.tld$ [NC]
RewriteRule ^(.*)$ /subfolder/$1 [L,E=APPEND_ROOT:subfolder/]

然后一个简单的修改应该给你正确的路径:

$doc = $_SERVER['DOCUMENT_ROOT'] . $_ENV['REDIRECT_APPEND_ROOT'];
如果您不想为每个站点配置完整路径名,那么

$_SERVER['DOCUMENT_ROOT'];是必要的(这有点痛苦)。

如果您没有使用.htaccess来解析您的子域,并且您已在Apache配置中设置它们,那么它应该指向每个子域的正确物理主页。

答案 1 :(得分:1)

$_SERVER['DOCUMENT_ROOT']是路径。尝试使用'SERVER_NAME''REQUEST_URI'

  

'SERVER_NAME'

     

执行当前脚本的服务器主机的名称。如果脚本在虚拟主机上运行,​​则这将是为该虚拟主机定义的值。

  

'REQUEST_URI'

     

为了访问此页面而给出的URI;例如,'/ index.html'。