簡體   English   中英

包括來自不同目錄的文件

[英]including files from different directories

因此,我在/inc文件夾中設置了頭文件,例如header.phpnav.phpfooter.php

然后,將文件包含在頁面中。 但是,如果我還有另一個文件夾,例如wiki ,我想將這些文件包括在Wiki頁面上,則include的文件路徑會中斷。

示例:我已將其包含在wiki目錄的頁面中。

<?php include_once('../inc/header.php'); ?>

我在header.php文件中還有另外兩個include,但是由於我將它們包括在不同的目錄中,因此兩個都包含break,除非我去在include路徑中附加../

我想知道在不同目錄中包含文件而不用回頭修復路徑的最佳方法是什么?

在初始文件中使用realpath創建常量,然后使用易於閱讀和管理但現在為絕對路徑引用它們。

您可以在此處查看示例:

如何從PHP獲取URL的“應用程序根目錄”?

我還建議在定義之前測試常量定義。

最簡單的解決方案? 使用絕對路徑。

如果文件位於同一級別的目錄中,則相對路徑(帶有../)將相同。 如果彼此之間有一個,則需要在子目錄中以../開頭。 更改路徑的唯一方法是將鏈接創建為代表主目錄的子目錄,盡管這可能會導致與遞歸過程有關的危險后果。

btw,include_once表示此操作是“可選的”,表示程序將繼續執行。 如果您需要包含的文件,請使用require_once,如果程序不存在,則該程序將中斷。

這樣包括他們

require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'inc'.DIRECTORY_SEPARATOR.'header.php');

這可以工作!

我喜歡使用這種方法:

define('ROOT_DIR', dirname(__FILE__) . '/'); // Defined on the index or in the bootstrap
include(ROOT_DIR . 'subfolder/fileName.php');

如果使用PHP的本機set_include_path添加一個include文件夾,則可以僅按文件名包含文件。

<?php
/**
 * The path to your /inc/ folder.
 */
$path = '/absolute/path/to/inc/';

/**
 * get_include_path retrieve's the current include path. 
 * It's a bad idea to over write the entire include path
 * The PATH_SEPARATOR constant is set per operating system
 */
set_include_path(get_include_path() . PATH_SEPARATOR . $path);

/**
 * You can now include any files in /inc/ from any directory with no path
 */
include_once('header.php');
?>

$_SERVER['DOCUMENT_ROOT']為您提供Web服務器的DocumentRoot ,例如Apache。 然后,您可以將其作為穩定的基准並從那里進行映射,因為不會改變。

include_once($_SERVER['DOCUMENT_ROOT'].'/inc/header.php');

我發現在IIS上運行時必須這樣做str_replace(“ \\\\”,“ /”,$ _ SERVER ['DOCUMENT_ROOT']),如果有幫助的話。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM