繁体   English   中英

php包含和其他文件的路径

[英]php Include and path to other files

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

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

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

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

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

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

加载index.php时,该图像将正确显示。 当加载位于另一个文件夹中的index2.php但成功加载“ load.php”文件时,该映像表示找不到该映像,这很有意义,因为index2.php正在调用该映像,就好像它是在同一个文件夹中,不是。

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

首先,尝试使用文档根目录指定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,它都将始终从正确的位置抓取它(无需在include调用中添加../等),并且image / scripts / css / etc都可以工作他们被拉到什么页面

如上所述, $_SERVER['DOCUMENT_ROOT']指示include中的当前公共根目录。

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

编辑:Ben的编辑速度更快

我建议做一个config.php

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM