1

我在构建小型网站时遇到了 PATH 问题。该站点由不同文件夹中的一些标准页面和名为 _include 的文件夹中的其他一些页面组成。我现在在每个页面上都包含三个文件 - menu.php、header.php 和 footer.php - 所有三个文件都包含在文件夹 _include 中。我已经使用了 set_include_path 并且就 PHP 而言它工作得很好。但是,在涉及 HTML 时存在问题。在 header.php 文件中我有这个语法<img src="_pics/header.png" width="XXX" height="YYY" />

只要包含 header.php 的所有文件都在同一目录中,代码就可以正常工作并且图片会加载。但是如果我尝试将它包含在子目录的页面中,那么图片不会加载,这很明显,因为目录级别现在已经改变。

所以我的问题是如何解决这个问题,以便 HTML 路径在包含的 PHP 文件中工作,无论它们放在网站上的什么位置?

4

4 回答 4

4

最简单的解决方案是始终使用相对于 web-root 的资产的绝对路径:

<img src="/_pics/header.png" width="XXX" height="YYY" />
          ^ absolute path

这适用于图像、javascript 文件、css 文件等所有内容。

现在,您的包含文件的位置无关紧要,甚至可以在 web-root 之外。

于 2012-11-22T14:23:33.430 回答
0

如果您的路径是静态的,您可以使用 php document_root 或 server_name 变量。

<?php echo "<img src=\"http://".$_SERVER['SERVER_NAME']."/_pics/header.png\" width="XXX" height="YYY" />"; ?>
<?php echo "<img src=\"".$_SERVER['DOCUMENT_ROOT']."/_pics/header.png\" width="XXX" height="YYY" />"; ?>

如果您的页面被移动,但您需要在此代码中更改它以反映新位置。

于 2012-11-22T14:28:47.117 回答
0

您必须了解绝对 URL 和相对 URL之间的区别。

只要包含 header.php 的所有文件都在同一目录中,代码就可以正常工作并且图片会加载。但是如果我尝试将它包含在子目录的页面中,那么图片不会加载,这很明显,因为目录级别现在已经改变。

<img src="_pics/header.png" width="XXX" height="YYY" />

当您尝试包含在子目录中时它如何映射 -

<img src="subdir/_pics/header.png" width="XXX" height="YYY" />

如您所知,图片未放置在下方,subdir因此未加载图片。

在这种情况下,您必须使用以 wtih 开头http://和结尾的绝对 URLpicname.png作为示例。

于 2012-11-22T14:36:08.653 回答
-1

使用完整路径,例如:http:// domain_name/path 。这可能就是您要查找的内容。

于 2012-11-22T14:29:42.083 回答