我正在使用一个简单的解决方案来获取服务器root,并且它与我的包含有很好的效果:
<?php $root = $_SERVER['DOCUMENT_ROOT'].'/frizkie'; ?>
我正在做一些表,包含该表的.php文件嵌套在以下几个目录中:
/main/tools/planners.php
我的图片位于:
/images/staticons/
我的代码如下:
<td onClick="document.location.href='planners/agility.php';">Contents</a></td>
我希望能够将$ root目录用于'planners / agility.php'部分,但是这样做:
onClick="document.location.href='<?php echo $root; ?>/planners/agility.php';"
导致onClick部分根本不起作用。除此之外,我还想使用$root
变量使用相同的方法定义表格单元格背景。我尝试在background =“”定义中使用PHP标记,但图像不会在Chrome或Firefox中显示 - 只有IE9。
答案 0 :(得分:1)
$_SERVER['DOCUMENT_ROOT']
可用于服务器端路径。您不需要将它放在标记,CSS和JS中。我坚持使用绝对相对路径,如/images/background.jpg
(注意前导斜杠)。这样,即使您的网页是通过
http://example.com/blog/123-my-beautiful-post/
从
下载图像 http://example.com/images/background.jpg
而不是
http://example.com/images/blog/123-my-beautiful-post/images/background.jpg
。
在包含分散在文档根目录周围的多个文件时,使用DOCUMENT_ROOT
会有很大帮助 - 在这里使用相对路径让我很头疼。但是,如果你真的想在页面中填写完整的网址,那么你可以尝试使用$_SERVER['SERVER_NAME']
,但我真的不明白这样做的必要。
答案 1 :(得分:0)
编写HTML标记时,请勿在href中使用服务器路径。相反,href应该是相对于您网站域的基础。
如果要通过require / require_once / include / include_once加载PHP文件,请使用文档根目录。
此外,您的代码无法正常工作的原因可能是因为在某些Web服务器安装中,文档根目录存在以下三种情况之一(在Apache httpd.conf中设置):
所以你必须检查所有三个条件,然后决定总是有一个尾随斜杠。
如果没有设置,你应该明确地将$ docroot设置为定义的常量,如define(“DOCROOT”,“/ user / home / jayleno /”),然后在整个代码中使用它。
$docRoot = $_SERVER['DOCUMENT_ROOT'];
if (strlen($docRoot) <= 0) {
// you are going to have to hard code it
$docRoot = "/usr/home/jayleno/";
}
$lastChar = substr($docRoot, -1);
if ($lastChar != '\\' || $lastChar != '/')
$docRoot .= "/";
$templateRoot = $docRoot . "templates/";
$moduleRoot = $docRoot . "modules/";
.
.
$rootCanal = $docRoot . "mytootheaches/";