How to require_once from different directories?

后端 未结 2 1789
南方客
南方客 2021-01-20 21:49

I am trying to require my \"library\" files from php files in different folders, but it gives errors when trying to access them from a subfolder. For example I have such a d

2条回答
  •  野趣味
    野趣味 (楼主)
    2021-01-20 22:48

    The file does not exist.

    The error message reads:

    Warning: require_once(C:\xampp\htdocs\home\subfolder): failed to open stream:

    And:

    Failed opening required ''

    Error messages never lie (well, almost never), therefore you are calling:

    require_once('');
    

    Realpath returns false for missing files

    Realpath will return false if you pass it a path to a file that doesn't exist:

    $return = realpath('this/doesnt/exist.foo'); // $return is false
    

    Therefore, the argument passed to realpath doesn't refer to a file, which is the reason the path doesn't work.

    Don't over use realpath

    If you remove the use of realpath, you'll find that the error message is probably obvious. At a guess you're trying to include C:\xampp\htdocs\home\subfolder\libraries\database_library.php - because there is a missing . in this:

    line 25 is require_once(realpath("./libraries/database_library.php"));

    If instead you just define a root path:

    define('ROOT', 'C:\xampp\htdocs\home\\');
    

    Then you can use this constant with absolute confidence that these sort of problems wont occur:

    require_once(ROOT . "libraries/database_library.php");
    

    And if you do get the path wrong, the error message will make it obvious what the problem is.

提交回复
热议问题