在文件夹路径外定义webroot

时间:2013-01-29 19:03:29

标签: php

我有这样的文件夹结构:

  public_html
     /index.php   
  outside
     /other.php

我想要public_html/index.php包含文件,它位于outside文件夹中。所以,我想在public_html/index.php文件中定义外部文件夹路径。我这样做了:

的index.php

 $doc_root_upper = preg_replace("#/[^/]+$#", "", $_SERVER["DOCUMENT_ROOT"]);
 $outside_folder = $doc_root_upper."/outside";
 include outside_folder.'/other.php';

这有效,但是在文件夹路径外定义webroot有更好的做法吗?

3 个答案:

答案 0 :(得分:2)

使用这样的相对路径:

Include("../outside/other.php");

../表示一个目录。

答案 1 :(得分:1)

我个人的偏好是使用init.php启动我的auto_prepend_file文件(由php.ini的chdir($_SERVER['DOCUMENT_ROOT'])指令包含)。

这意味着我的所有包含和其他文件功能都是从文档根目录完成的。

在您的情况下,这意味着您可以可靠地include ../outside/other.php

答案 2 :(得分:1)

我喜欢使用chdir()来获取显式路径,然后将它们添加到包含路径中。我倾向于有一个名为init.php的文件,其中包含以下内容:

$path = get_include_path(); // get the current path
$oldcwd = getcwd(); // get the current path

// change to outside of the document root
chdir($_SERVER['DOCUMENT_ROOT'] . "/.."); 
$newcwd = getcwd(); // get the new working directory

// build the new path. Using hte _SEPARATOR constants ensures 
// that it works on all platforms.
$newpath = $path . PATH_SEPARATOR . $newcwd . DIRECTORY_SEPARATOR . "outside"; 

// Set the new path
set_include_path($newpath);

chdir($oldcwd); // change back to the original working directory