【问题标题】:$_SERVER['DOCUMENT_ROOT']$_SERVER['DOCUMENT_ROOT']
【发布时间】:2011-12-13 16:42:13
【问题描述】:

首先,如果您阅读本文,请提前感谢您的耐心等待,- 我是 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/ *

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

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

【问题讨论】:

  • 你的这部分问题没有意义:“如上,url始终是www.++++格式的静态url”DOCUMENT_ROOT是物理文件路径,不是一个网址。如果您出于某种原因不需要文件的物理路径,则可能根本不需要此代码。

标签: php-5.2


【解决方案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 配置中设置了它们,那么它应该已经指向每个子域的正确物理主目录。

【讨论】:

    【解决方案2】:

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

    'SERVER_NAME'

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

    'REQUEST_URI'

    为访问此页面而提供的 URI;例如,'/index.html'。

    【讨论】:

      猜你喜欢
      • 2013-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-01
      • 1970-01-01
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多