php包含和其他文件的路径

时间:2013-06-15 02:13:16

标签: php php-include

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

当调用include的页面发生更改时,include调用的文件位置也会发生变化。得到它?

实施例: 我得到了一个名为“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,但如果这是我将使用它的唯一方法。我只是在寻找更好的选择。

3 个答案:

答案 0 :(得分: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 / etc无论在什么页面被拉入

都会有效

答案 1 :(得分:1)

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

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

编辑:Ben编辑速度更快

答案 2 :(得分:0)

我建议制作一个config.php

使用变量作为完整路径E.g. $imgPath = 'www.host.com/path/images/';

在每个页面的开头包含它,

在load.php中

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

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