我需要一个像这样的函数内的文件:
function MyFunction(){
require_once('../../myfile.php');
//do stuff
}
此功能可以在站点的任何位置使用,因此所需文件的路径不应更改。我尝试使用chdir(dirname(__FILE__));
,但稍后在php中更改了我的其他文件的目录,这是不可取的。
当我在整个网站的各个目录中时,我收到一条错误消息,指出所需文件无法打开流。
我该怎么做?
答案 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.php
是index.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