搜索

首页  >  问答  >  正文

如何在不同文件夹中包含位于不同位置的PHP文件

<p>我的网站大部分位于根目录中。在该目录下有"css"、"functions"和"images"文件夹。当我在index.php或其他根文件中包含php文件时,一切都正常工作。它可以正确地包含和执行。</p> <p>但是当我创建了一个名为"blog"的文件夹时,问题就出现了。这是一个全新的、独立的根文件夹,带有CMS和它自己的"root"文件。当我尝试从主根目录中包含css或主根目录中的"functions"文件夹中的php文件时,一切都崩溃了。我知道我必须使用<code>../functions/myfile.com</code>来包含它。但是这个文件还包含其他文件,所以它无法正常工作,也无法正确地包含其他文件。</p> <p>有没有什么办法可以解决这个问题?</p>
P粉447002127P粉447002127449 天前520

全部回复(2)我来回复

  • 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 上(查看文件结构),每次我向上进入一个文件夹,我就输入另一个 "../"。然后你必须确保你向上进入的是你想要开始进入的文件夹的上层文件夹结构。之后,就是正常的文件夹层次结构。

    回复
    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;       
    }

    回复
    0
  • 取消回复