我有这样的文件夹结构:
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有更好的做法吗?
答案 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