如何在不同資料夾中包含位於不同位置的PHP文件
P粉447002127
P粉447002127 2023-08-22 00:21:10
0
2
512
<p>我的網站大部分位於根目錄。在該目錄下有"css"、"functions"和"images"資料夾。當我在index.php或其他根文件中包含php文件時,一切都正常工作。它可以正確地包含和執行。 </p> <p>但當我建立了一個名為"blog"的資料夾時,問題就出現了。這是一個全新的、獨立的根資料夾,帶有CMS和它自己的"root"檔案。當我嘗試從主根目錄中包含css或主根目錄中的"functions"資料夾中的php檔案時,一切都崩潰了。我知道我必須使用<code>../functions/myfile.com</code>來包含它。但是這個文件還包含其他文件,所以它無法正常工作,也無法正確地包含其他文件。 </p> <p>有沒有辦法解決這個問題? </p>
P粉447002127
P粉447002127

全部回覆(2)
P粉976737101

如果我理解你的意思正確的話,你有兩個資料夾,一個是你想要將其 include 到另一個資料夾中的php腳本所在的資料夾?

如果是這種情況,你只需要正確地按照路徑進行操作。 假設你的資料夾結構如下:

root
    includes
        php_scripts
            script.php
    blog
        content
            index.php

如果這是你提出的資料夾結構,並且你想要將 "Script.php" 檔案包含到 "index.php" 資料夾中,你需要這樣包含它:

include("../../../includes/php_scripts/script.php");

我做的方式是視覺化的。我將滑鼠指標放在 index.php 上(查看文件結構),每次我向上進入一個資料夾,我就輸入另一個 "../"。然後你必須確保你向上進入的是你想要開始進入的資料夾的上層資料夾結構。之後,就是正常的資料夾層次結構。

P粉614840363

您可以使用$_SERVER['DOCUMENT_ROOT']從每個網站內部存取根目錄僅用於測試,您可以列印出路徑以確保它正常工作,如果您以正確的方式進行操作。 您絕對不希望顯示本機伺服器路徑,例如包含需要

網站1

echo $_SERVER['DOCUMENT_ROOT']; //应该是 '/main_web_folder/';

網站1下的包含檔案應該在:

echo $_SERVER['DOCUMENT_ROOT'].'/includes/'; // 应该是 '/main_web_folder/includes/';

網站2

echo $_SERVER['DOCUMENT_ROOT']; //应该是 '/main_web_folder/blog/';

網站2存取網站1中的包含檔案的實際程式碼:

include($_SERVER['DOCUMENT_ROOT'].'/../includes/file_from_site_1.php');

如果您嘗試透過排除document rootroot斜線來存取文件,則只會使用執行查詢的文件的相對路徑(不是絕對可靠或非平台特定):

include('../includes/file_from_site_1.php');

包含的路徑在站點前端(線上)的任何程式碼中都沒有位置,應該在僅限於生產環境中進行安全使用。

此外,對於網站本身的URL,您可以使它們相對於網域名稱。瀏覽器會自動填入其餘部分,因為它們知道自己正在查看的頁面。所以,不要使用:

<a href='http://www.__domain__name__here__.com/contact/'>联系</a>

而應該使用:

<a href='/contact/'>联系</a>

為了良好的SEO,您需要確保部落格的URL在其他網域中不存在,否則可能會被標記為重複網站。在這種情況下,您可能還想在僅限於網站1robots.txt檔案中新增一行:

User-agent: *
Disallow: /blog/

其他可能性:

尋找您的IP位址並包含以下程式碼片段:

function is_dev(){
  //使用来自Google的外部IP。
  //如果您在本地托管,它是127.0.01,除非您更改了它。
  $ip_address='xxx.xxx.xxx.xxx';

  if ($_SERVER['REMOTE_ADDR']==$ip_address){
     return true;
  } else {
     return false;
  } 
}

if(is_dev()){
    echo $_SERVER['DOCUMENT_ROOT'];       
}

請記住,如果您的ISP更改了您的IP,例如您具有DCHP動態IP,則需要更改該檔案中的IP以查看結果。我建議將檔案放在一個包含檔案中,然後在偵錯頁面上要求它。

如果您可以使用瀏覽器的控制台日誌等現代方法,您可以使用以下程式碼,並在瀏覽器的偵錯介面中查看它:

if(is_dev()){
    echo "<script>".PHP_EOL;
    echo "console.log('".$_SERVER['DOCUMENT_ROOT']."');".PHP_EOL;
    echo "</script>".PHP_EOL;       
}
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!