得到PHP包含路径蓝调。快速简便的引导程序?

时间:2011-09-30 02:19:41

标签: php filepath

我在一个项目中相当远,并且无法正确包含所有内容。 我有几个文件在不同的目录中需要包含相同的文件,但由于一些文件是通过ajax或通过包括在不同的情况下调用,因此路径会有所不同。我通过.htaccess设置了一个php_include路径,但我需要设置的测试服务器不能在.htaccess中使用php命令运行!我想弄清楚一起把所有东西都拉到一起的快速方法。

我有多个文件,包括相同的'项目'文件,而后者又包含函数等。我有一个$ ROOT变量设置来存储我的目录的绝对路径,但是这不能用于包含php.ini,我不能轻易做到,无论如何都包括在内。

我对bootstrapping有一点了解,我很乐意通过htaccess来传递所有内容,但我并不真正有一个如何快速,轻松地实现类似内容的概念(并且这对于通过AJAX?)

我不能依赖server_document_root,因为它可能需要驻留在子目录中。

这不是基于类的,而是具有数据库内容的值对象..根目录中有主要的home.php,view.php等,然后是带有主脚本和值对象的程序/目录,然后是实用程序和包含微型视图类型类的组件文件夹。

如果我有时间的话,我会重做一切,但是现在我正试图想办法让一切都正常工作(最好不要把所有东西都放到一个文件夹中:p)

2 个答案:

答案 0 :(得分:3)

home.php,或view.php包含您的“主”文件,这将包含您应用的其余部分。

require 'base.php';

如果home.phpview.php在其他目录中,那就好了,只需在该文件中执行任何操作即可加载base.php这样的内容将起作用:

require '../base.php';

然后在base.php

$root = dirname(__FILE__);
require $root.'/lib/mylib1.php';
require $root.'/lib/mylib2.php';

__FILE__是当前文件的完整路径,dirname获取其目录,然后您可以编写相对于base.php位置的所有包含/要求。

我希望这有助于指明您的方向。

答案 1 :(得分:2)

一个简单的解决方案是在包含文件之前使用变量集。然后,您可以检查是否定义了此变量,以及是否使用了ajax的路径,而不是包含路径。

$included = true;
include("ajax_inc.php");

假设您的主文件位于/且您的ajax文件位于/ ajax:

if (isset($included)) {
    $path = "/";
} else $path = "../";

您还可以使用getcwd()和chdir()

进行一些检查

http://php.net/manual/en/function.getcwd.php