Heim  >  Fragen und Antworten  >  Hauptteil

So fügen Sie PHP-Dateien ein, die sich an verschiedenen Orten in verschiedenen Ordnern befinden

<p>Der größte Teil meiner Website befindet sich im Stammverzeichnis. In diesem Verzeichnis befinden sich die Ordner „css“, „functions“ und „images“. Wenn ich die PHP-Datei in index.php oder andere Root-Dateien einbinde, funktioniert alles einwandfrei. Es enthält und wird korrekt ausgeführt. </p> <p>Das Problem tritt jedoch auf, wenn ich einen Ordner namens „Blog“ erstelle. Dies ist ein brandneuer, separater Root-Ordner mit dem CMS und einer eigenen „Root“-Datei. Wenn ich versuche, CSS aus dem Hauptstammverzeichnis oder eine PHP-Datei aus dem Ordner „functions“ im Hauptstammverzeichnis einzubinden, stürzt alles ab. Ich weiß, dass ich <code>../functions/myfile.com</code> verwenden muss, um es einzubinden. Da diese Datei aber auch andere Dateien enthält, funktioniert sie nicht und bindet die anderen Dateien nicht korrekt ein. </p> <p>Gibt es eine Möglichkeit, dieses Problem zu lösen? </p>
P粉447002127P粉447002127397 Tage vor460

Antworte allen(2)Ich werde antworten

  • P粉976737101

    P粉9767371012023-08-22 16:44:45

    如果我理解你的意思正确的话,你有两个文件夹,一个是你想要将其 include 到另一个文件夹中的php脚本所在的文件夹?

    如果是这种情况,你只需要正确地按照路径进行操作。 假设你的文件夹结构如下:

    root
        includes
            php_scripts
                script.php
        blog
            content
                index.php

    如果这是你提出的文件夹结构,并且你想要将 "Script.php" 文件包含到 "index.php" 文件夹中,你需要这样包含它:

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

    我做的方式是可视化的。我将鼠标指针放在 index.php 上(查看文件结构),每次我向上进入一个文件夹,我就输入另一个 "../"。然后你必须确保你向上进入的是你想要开始进入的文件夹的上层文件夹结构。之后,就是正常的文件夹层次结构。

    Antwort
    0
  • P粉614840363

    P粉6148403632023-08-22 09:38:21

    您可以使用$_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;       
    }

    Antwort
    0
  • StornierenAntwort