可在本地(mac)和远程服务器上运行的php路径

时间:2009-11-08 12:34:21

标签: php path

我正在我的本地计算机上测试一个网站,我想知道当我将网站上传到最终位置时,编写路径以确保它们正常工作的最佳方式。

一般来说,我对路径有点困惑,在很多情况下,我必须“调整”每条路径直到它工作,所以不希望被迫在生产网站上做同样的事情!

我不清楚何时使用$_SERVER['DOCUMENT_ROOT']。 例如,我有一个我想要扫描的目录,它位于根目录下。那么为什么我不能只使用“/ dirname”?

$dir = $_SERVER['DOCUMENT_ROOT'] . '/uploads'; //this works
// $dir = "/uploads"; //this doesn't work

if (is_dir($dir)) {
  //do something..
}

3 个答案:

答案 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);
相关问题