我正在我的本地计算机上测试一个网站,我想知道当我将网站上传到最终位置时,编写路径以确保它们正常工作的最佳方式。
一般来说,我对路径有点困惑,在很多情况下,我必须“调整”每条路径直到它工作,所以不希望被迫在生产网站上做同样的事情!
我不清楚何时使用$_SERVER['DOCUMENT_ROOT']
。
例如,我有一个我想要扫描的目录,它位于根目录下。那么为什么我不能只使用“/ dirname”?
$dir = $_SERVER['DOCUMENT_ROOT'] . '/uploads'; //this works
// $dir = "/uploads"; //this doesn't work
if (is_dir($dir)) {
//do something..
}
答案 0 :(得分:1)
我不清楚何时使用
$_SERVER['DOCUMENT_ROOT']
。对于 例如,我有一个目录,我 想要扫描,这就是下面的 根。那我为什么不能用呢 “/目录名”?
当您使用php文件中的路径时,根(/
)是文件系统的根,而不是您访问网站时获得的根。
因此$dir = "/uploads";
为您提供文件系统根目录。
要缩小您的问题,我会在配置文件中声明一个变量,该变量指定php应用程序的根目录,并使用该路径+需要更多其他内容。
答案 1 :(得分:0)
正如adamse所提到的,你不能使用'/ path'的原因是因为它指向文件系统的根目录。
但是,我建议使用dirname(__FILE__)
来检索调用文件所在目录的完整路径,而不是声明定义根的变量。
从那里,将相对路径信息附加到您想要的文件,然后完全动态地获得完整路径。
例如,如果要将'header.php'文件包含在要包含在其中的文件上方的目录中:
include(dirname(__FILE__) . '/../header.php');
这就是PHP总是会自动将正斜杠转换为主机操作系统所需的目录分隔符。
答案 2 :(得分:0)
我将定义一个变量/常量来描述应用程序的绝对文件系统路径。像这样:
$appDir = rtrim(str_replace('\\', '/', realpath(dirname(__FILE__))), '/');
然后,您可以使用此基本路径来解决应用程序的文件:
include $appDir.'/library/foo/bar.php';
或者您甚至将包含路径更改为该目录:
set_include_path($appDir);