需要/包含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 文件包含总结 include require 命名空间 autoload spl_autoload_register 读取文件路径