在href=";中使用PHP标记&引用;定义

在href=";中使用PHP标记&引用;定义,php,html-table,directory,include,root,Php,Html Table,Directory,Include,Root,我正在使用一个简单的解决方案获取服务器根目录,它与我的includes配合得非常好: <?php $root = $_SERVER['DOCUMENT_ROOT'].'/frizkie'; ?> 我的图像位于: /images/staticons/ 我的代码如下所示: <td onClick="document.location.href='planners/agility.php';">Contents</a></td> 内容 我希望能够

我正在使用一个简单的解决方案获取服务器根目录,它与我的includes配合得非常好:

<?php $root = $_SERVER['DOCUMENT_ROOT'].'/frizkie'; ?>
我的图像位于:

/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=“document.location.href=”/planners/agility.php'

导致onClick部件完全不工作。除此之外,我还想使用相同的方法定义表格单元格背景,使用
$root
变量。我曾尝试在background=”“定义中使用PHP标记,但图像不会在Chrome或Firefox中显示-仅在IE9中显示。

$\u服务器['DOCUMENT\u ROOT']
可以说是用于服务器端路径,正如您已经注意到的那样。您不需要将它放在标记、CSS和JS中。我坚持使用绝对相对路径,如
/images/background.jpg
(注意前面的斜杠)。这样,即使您的页面是通过如下URL访问的

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\u ROOT
在包含分散在文档根周围的多个文件时会有很大帮助-在这里使用相对路径让我头疼。但是,如果您确实希望在页面中使用完整的URL,您可以尝试使用
$\u SERVER['SERVER\u NAME']
,但我确实不理解这样做的必要性。

在编写HTML标记时,不要在HREF中使用服务器路径。相反,HREF应该与您的网站域的基础相对

当您希望通过require/require\u once/include/include\u 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/";
    
    $docRoot=$\u服务器['DOCUMENT\u ROOT'];
    
    如果(strlen($docRoot)查看文件源代码是显示的变量吗?
    来自IE9上的源代码视图。我觉得很好,但我无法单击单元格并跟随链接。我想我试图使其变得比必要的更复杂,可能在过去做了一些错误,使我认为用反斜杠启动路径不会自动转到根目录我想我弄糊涂了,因为我的本地服务器文件继承人权限与Web服务器的根目录(localhost vs domain.com)的结构不同。非常感谢!
    $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/";