【问题标题】:Can't get root directory for some reason由于某种原因无法获取根目录
【发布时间】:2015-09-30 11:20:05
【问题描述】:

我试图要求一些文件,但它一直告诉我找不到它们。这些文件位于不同的文件夹中。

index.php -> ../core/init.php -> ../library/autoload.php

http://pastebin.com/rG3bvSzn

谁能帮我解决这个问题?在过去的一个小时里,这让我发疯了。

【问题讨论】:

    标签: php require-once


    【解决方案1】:

    如果您尝试包含或需要文件,则路径必须来自完整根目录。试试这个:

    <?php
    $root = $_SERVER['DOCUMENT_ROOT'];
    // This is where index.php probably is
    
    require_once($root.'sanitize.php');
    require_once($root.'general.php');
    ?>
    

    如果您回显$root,您将看到文件的实际路径。

    【讨论】:

    • 感谢您的帮助,我试过了,它把我带到了服务器的绝对根目录,我有多个项目。在我将文件移动到单独的文件夹之前,这一切都有效。
    • 好吧,您需要从根目录中找到您的文件所在的文件夹,并将其添加为$root.'/folder/libaries/general.php'。如果你使用 ? $root.'general.php',require 将假定您包含的文件位于您的根文件夹中。您需要在两者之间添加文件夹。
    • 我通过移动调用它的文件(init.php)来修复它 init 作为根目录没有可能的安全问题吗?我正在尝试构建一个 MVC 应用程序。
    【解决方案2】:

    不,您不需要 require 脚本的完整路径。

    问题在于,在您的 autoload.php 中,它位于 ../library/ 文件夹中,当您尝试“require_once”时,路径从 ../library/ 开始

    “require”在调用函数的主脚本文件夹中开始。

    /somefolder/index.php

    require('../core/init.php');
    

    /core/init.php

    require('../library/autoload.php');
    

    /library/autoload.php

    print "hello";
    

    【讨论】:

      【解决方案3】:

      并让你的路径相对。

      对于 PHP

      $rootpath=dirname(__FILE__);
      
      require_once($rootpath.'sanitize.php');
      require_once($rootpath.'general.php');
      

      【讨论】:

        猜你喜欢
        • 2013-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-05
        • 2023-03-15
        相关资源
        最近更新 更多