PHP包含来自根文件夹中不同子目录的文件

Posted

技术标签:

【中文标题】PHP包含来自根文件夹中不同子目录的文件【英文标题】:PHP include files from different subdirectories within the root folder 【发布时间】:2016-05-23 12:41:12 【问题描述】:

我的问题类似于php include file strategy needed。我有以下文件夹结构:

/root/pages.php 
/root/articles/pages.php
/root/includes/include_files.php 
/root/img/images.jpg

/root”和“/root/articles”目录中的所有页面都包含一个“header.php”和“footer.php”文件,它们存储在“/root/includes”目录中。

页眉和页脚都包含存储在“root/img/”目录中的图像。

根据以下建议:

how it`s possible to include a file (include();) from the root folder to a files from different subfolders?

How to use a PHP includes across multiple directories/sub directories with relative paths

我尝试了**dirname**解决方案和$_SERVER['DOCUMENT_ROOT]解决方案将页眉和页脚包含在目录和articles子目录中存储的文件中。 p>

但是,当我尝试使用任一方法(在页眉和页脚文件中)链接图像时遇到问题:

<img src=" <?php echo dirname(__FILE__). '/img/image.jpg';?>">

Chrome 无法显示图片并抛出以下错误:

本地:不允许加载本地资源:file:///C:/root/img/image.jpg

在服务器上: GET http://host.com/home/public_html/root/img/image.jpg500(内部服务器错误)

我检查了 URL,它们似乎是正确的。搜索解决方案后,我发现 chrome 出于安全原因阻止显示包含其完整文件路径的文件。

我该如何解决这个问题?还是有另一种方法可以将文件(包括图像)包含到存储在任何子目录中的文件中?

【问题讨论】:

【参考方案1】:

@sandeep 的回答部分正确。因为

$_SERVER['DOCUMENT_ROOT'];

将再次返回根目录的完全限定路径。

<img src=" <?php echo 'http://localhost/favicon.ico';?>"/>

将返回图像,因为现在我没有根据您的问题给它本地路径,而是我正在运行的服务器的 url。

【讨论】:

【参考方案2】:

对于您包含的脚本,尝试使用set_include_path 设置includes_path

set_include_path( $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR );

然后,要在您的页面中包含一个脚本,您可以使用:

include( 'script.php' );

对于图片,在路径前加上斜杠 / ~ 即:

<img src='/img/image1.jpg' />

使用根相对路径而不是目录相对路径往往更容易,因此带有前导斜杠的前缀表示根中的文件夹。

【讨论】:

【参考方案3】:

这可能对你有帮助

$url = $_SERVER['DOCUMENT_ROOT'].'/img/image.jpg';
<img src="<?=$url?>">

【讨论】:

那没有解决它。我遇到了同样的问题。不允许我使用 file:// 协议打开文件。【参考方案4】:

使用 ../img/image.jpg 包含在 /root/articles 内的文件中。

使用 img/image.jpg 包含在 /root 内的文件中

【讨论】:

以上是关于PHP包含来自根文件夹中不同子目录的文件的主要内容,如果未能解决你的问题,请参考以下文章

如何更改子目录中文件的链接以便从根管理器访问?

PHP如何找到应用程序根?

makefile : 如何链接来自不同子目录的目标文件并包含不同的搜索路径

来自父目录的 PHP 包含/需要文件不起作用

Qt QML包含来自不同目录的问题

来自不同目录问题的 PHP ZipArchive::AddFile