如何在不同目录中使用的函数中使用require_once

时间:2013-02-14 05:48:07

标签: php function

我需要一个像这样的函数内的文件:

function MyFunction(){
    require_once('../../myfile.php');
    //do stuff
}

此功能可以在站点的任何位置使用,因此所需文件的路径不应更改。我尝试使用chdir(dirname(__FILE__));,但稍后在php中更改了我的其他文件的目录,这是不可取的。

当我在整个网站的各个目录中时,我收到一条错误消息,指出所需文件无法打开流。

我该怎么做?

3 个答案:

答案 0 :(得分:0)

我倾向于使用$_SERVER['DOCUMENT_ROOT']来做这样的事情。它依赖于在虚拟主机文件中设置文档根目录的位置。

答案 1 :(得分:0)

在这种情况下你应该使用绝对路径。

在你的index.php中,你应该获得index.php文件的位置,这将是你的参考点:

<?php

// store it in a constant, this info will not be changed anyway
define('APP_PATH',dirname(__FILE__));

//... rest of your code here

并且,当您必须为该文件执行require_once时(假设myfile.phpindex.php文件上方的2个目录):

require_once(dirname(dirname(APP_PATH)).DIRECTORY_SEPARATOR.'myfile.php');

或者如果myfile.php与index.php位于同一目录中:

require_once(APP_PATH.DIRECTORY_SEPARATOR.'myfile.php');

注意

DIRECTORY_SEPARATOR是路径分隔符的PHP常量(任何Linux,Unix,Mac等中的/或Windows中的\

答案 2 :(得分:0)

我将使用require_once(__DIR__'/../myfile.php')这个问题提供了类似的解决方案:

php require_once not working the way I want it to.. relative path issue