需要/包含php文件时更改文件夹路径

Posted

技术标签:

【中文标题】需要/包含php文件时更改文件夹路径【英文标题】:Change of folder path when require/ include an php file 【发布时间】:2013-10-10 08:13:41 【问题描述】:

我目前正在使用 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" />

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

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

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

【问题讨论】:

Use the required / included file as base directory in PHP 的可能重复项 【参考方案1】:

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

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

或者使用自动加载。

【讨论】:

感谢您的帮助,当我打开 index.php 时,图像文件仍然损坏 显示test.com/img/test.jpg,但实际上在test.com/new/img/test.jpg中 你是如何生成路径的? 把它变成一个绝对(web)路径。 但是当我在 index.php 中包含 new/index.php 时,它将是 img/test.jpg 而不是 new/img/test.jpg【参考方案2】:

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

set_include_path("/var/www/html/root");
require_once("new/index.php");

【讨论】:

【参考方案3】:

你只是问了两次同一个问题吗? Use the required / included file as base directory in PHP

在那里查看我的答案。

【讨论】:

【参考方案4】:

您可以通过添加 base 标记来简单地更改包含的 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>';

【讨论】:

以上是关于需要/包含php文件时更改文件夹路径的主要内容,如果未能解决你的问题,请参考以下文章

PHP open_basedir配置未包含upload_tmp_dir 导致服务器不能上传文件

物理路径更改时应用程序域重新启动

将PHP文件包含到HTML文件中[重复]

PHP 文件包含总结 include require 命名空间 autoload spl_autoload_register 读取文件路径

在php中需要一次问题

CSS不适用于包含的PHP文件