0

我目前正在使用 index.php 来包含另一个文件,它的结构如下:

root / index.php
     / new/ index.php
          / img/ test.jpg

我在 root/index.php 中写了以下内容:

<?php
require_once("new/index.php");
?>

问题是,其中的所有路径都是错误的。因为所有路径都基于 new/index.php。

例如,在 new/index.php 我的 test.jpg 就像

<img src="img/test.jpg" />

它显示http://www.test.com/new/img/test.jpg当我直接访问 new/index.php

但它显示http://www.test.com/img/test.jpg当我在 index.php 中包含 php 时。

如何解决?我试过 chdir() 但它不起作用期待谢谢

4

4 回答 4

6

确保始终包含绝对路径,例如:

require_once(dirname(__FILE__) . "/otherfile.php");
require_once(dirname(__FILE__) . "/../uponefolder.php");
require_once(dirname(__FILE__) . "/sub/folder/file.php");

或者使用自动加载。

于 2013-10-03T14:57:33.137 回答
2

你是不是问了两次同一个问题?在 PHP 中使用所需/包含的文件作为基目录

在那里看到我的答案。

于 2013-10-03T15:04:11.187 回答
1

你在 require_once() 函数中的文件夹路径是相对于你的页面当前所在的目录的。看看set_include_path函数。具体来说,您可以将该函数添加到脚本的顶部以设置根包含文件夹。像这样的东西:

set_include_path("/var/www/html/root");
require_once("new/index.php");
于 2013-10-03T15:01:50.017 回答
0

您可以通过添加基本标记 来简单地更改包含的 HTML 文档库。https://developer.mozilla.org/fr/docs/Web/HTML/Element/base

<head>
  <base href="your_new_url_base" target="_blank">
</head>

包含的 HTML 文件可以检查“我是从父母那里获得的吗?” 如果是这样“我必须更改我的基本标签”......

// new/index.php

echo '<head>';

if (basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
  // called directly, no need base tag;
} else {
  // included/required
  echo '<base href="your_new_url_base" target="_blank">';
}

echo '</head>';
于 2021-12-03T16:12:39.447 回答