0

使用 php 包含函数时,我可以轻松地在多个页面上使用相同的代码,现在我遇到的问题是,我的包含文件、输出和图像。

随着调用包含的页面发生变化,包含调用的文件的位置也会发生变化。得到它?

示例:我得到了一个名为“index.php”的文件。我还有一个名为“load.php”的文件。我最后得到了一个名为“/folder/index2.php”的文件

index.php 代码:<?php include("load.php"); ?>

index2.php 代码:<?php include("../load.php"); ?>

load.php 代码:<?php echo '<img src="image.png"/>'; ?>

加载 index.php 时,图像会按照应有的方式完美显示。当加载位于另一个文件夹中的 index2.php,但成功加载“load.php”文件时,图像说找不到,这是有道理的,因为 index2.php 正在调用图像,就好像它是在同一个文件夹中,它不是。

那么,有没有办法做到这一点?我试图避免使用完整的 url,但如果这是我使用它的唯一方法。我只是在寻找更好的选择。

4

3 回答 3

2

首先,尝试include使用文档根目录指定您的文件:$_SERVER['DOCUMENT_ROOT']...这将始终指向公共根文件夹,因此无论您在站点的哪个位置,它都是相同的 -当您开始包含本身的文件时,这特别有用include/require其他文件...在这种情况下,包含的脚本本身包含相对的子脚本(../load.php|subfolder/load.php等)将永远不会在文件夹层次结构中的两个不同级别上工作。

<?php include($_SERVER['DOCUMENT_ROOT']."/load.php"); ?>

然后对于在 html 中调用的资源,简单地使它们都相对于公共根目录:

<?php echo '<img src="/image.png"/>'; ?>

注意到/图片前面的了src吗?无论当前显示的页面在哪个文件夹中,它都会调用图像。

或者,您可以绝对指定资源(尽管这并不理想,因为站点域更改会破坏资源链接):

<?php echo '<img src="http://www.yoursite.com/image.png"/>'; ?>

无论哪种方式,无论您从哪个脚本调用包含,它将始终从正确的位置获取它(无需../在您的调用中添加等include),并且图像/脚本/css/等无论它们是什么页面都可以工作重新拉入

于 2013-06-15T02:19:00.317 回答
1

$_SERVER['DOCUMENT_ROOT']如前所述,指示包含中的当前公共根。

图像源可以以斜杠开头:<img src="/image.png">告诉浏览器查看域根目录。提到的 src 将告诉浏览器检查 www.example.com/image.png,如果放置在 www.example.com 下的任何文档或其任何子目录中。

编辑:本编辑速度更快

于 2013-06-15T02:28:39.500 回答
0

我建议制作一个 config.php

对完整路径使用变量,例如$imgPath = 'www.host.com/path/images/';

在每一页的开头包含它,

在 load.php 中使用<?php echo '<img src="'.$imgPath.'image.png"/>'; ?>

现在,当您包含 load.php 时,您将没有错误:)

于 2013-06-15T02:24:45.077 回答