1

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

我遇到的所有这些问题是,在某些情况下,我有html_partial files,(例如页眉或页脚)。但是这些部分的相对路径会根据您在文件树中的位置而有所不同。我最初通过总是回到根来解决这个问题。

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

PHP 有没有办法声明类似Application Rootif 的东西,你能给我解释一下或指导我看它的文档吗?谢谢!

4

2 回答 2

1

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

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

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

于 2012-08-15T16:58:52.927 回答
0

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

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')
于 2012-08-15T16:59:01.633 回答