如何使用PHP包括具有相对路径的多个目录/子目录

Ala*_*son 9 html php include

我正在尝试构建的cms系统中的路径有困难,我基本上有一个文件夹里面有我的header.php和footer.php文件.

这些都包含在index.php中并且工作正常.但是当我尝试在我的admin子目录中的文件中使用相同的包含时,图像和CSS被破坏,显然是因为相对路径现在是错误的.

所以我的问题是,我怎么能克服这个?

在阅读了这里和其他各种来源的其他一些问题后,我认为绝对路径是前进的方向,但我总是使用相对路径,因此使用配置文件指定绝对路径的各种概念让我感到困惑.

我通常设法为自己做事,但这是漫长的一天,我很难过!

Gab*_*mon 21

我通常在我的应用程序根目录中有一个名为config的文件,在其中我为基本路径和其他一些定义了一个常量:

define('APP_BASE_PATH', dirname(__FILE__));
define('APP_FUNCTIONS_PATH', APP_BASE_PATH . '/functions');
Run Code Online (Sandbox Code Playgroud)

我包括我的文件

include (APP_BASE_PATH . 'includes/another_file.php');
include (APP_FUNCTIONS_PATH . '/function_file.php');
Run Code Online (Sandbox Code Playgroud)

这样我就可以将我的应用程序放在任何目录中,而且我可以移动文件而不必担心.

也使用完整路径使包含更快


Ans*_*hul 5

我更喜欢设置环境变量(在Apache中,使用.htaccess或.conf).这样,您可以在webroot中的任何位置自由移动所有文件,并且可以访问这些变量.

SetEnv lib /library/folder/
SetEnv public /my/web/root/
SetEnv environ DEVELOPMENT
Run Code Online (Sandbox Code Playgroud)

您还可以使用上面.htaccess片段中提到的名为"environ"的变量,在所有脚本中包含服务器特定文件作为配置文件,并在那里设置各种变量.

require_once getenv('lib')."Configs/Config_".getenv('environ').".php";
Run Code Online (Sandbox Code Playgroud)

享受你的自由!