PHP 声明应用程序根目录


php declaring application root

我有一个小问题:我在一个更大的Web项目中开始了一个项目作为子目录。因此,Web 文件路径类似于/.。/我的项目。但事情已经取得进展,我意识到这应该是它自己的项目。但是,我希望能够将其保留在它的位置(作为子目录)也使其成为myProject成为根的子域。(我的项目也有可能被镜像到库站点,它曾经在子目录中)。

我对这一切的问题是,在某些情况下我有html_partial files,(例如页眉或页脚)。但是这些部分的相对路径因您在文件树中的位置而异。我最初通过始终回到根源来解决这个问题。

但是现在,你看,根据我的项目所在的位置,根源会有所不同。我想做的是将myProject声明为"应用程序根",然后能够使用基于此application根的相对路径,而不是Web路径中myProject的web root'. This way, all of the relative paths within 'myProject' will work no matter where

如果是这样,PHP 有没有办法声明类似Application Root的东西,你能解释一下我或指导我到它的文档吗?谢谢!

您可以简单地在应用程序根目录中放置一个 PHP 文件,该文件将它所在的目录定义为应用程序根目录。该文件可以像这样简单:

<?php
define('APPLICATION_ROOT', __DIR__);
?>

然后,您可以根据需要包含此文件,并将所有文件路径基于APPLICATION_ROOT 。请注意,APPLICATION_ROOT不会有此处定义的尾部斜杠(除非您的文件碰巧在计算机根目录中,这不太可能)。

我通常在前端控制器中做一些事情:

define('APPLICATION_PATH', realpath(__DIR__));

然后,您可以执行以下操作:

set_include_path(APPLICATION_PATH . '/include');

或:

$fp = fopen(APPLICATION_PATH . '/path/to/some/file', 'r');

如果您的应用不使用前端控制器,您可以在 vhost 配置或 .htaccess 中定义一个环境变量:

SetEnv APPLICATION_PATH /full/path/to/my/app

然后使用:

getenv('APPLICATION_PATH')