我在一个项目中相当远,并且无法正确包含所有内容。 我有几个文件在不同的目录中需要包含相同的文件,但由于一些文件是通过ajax或通过包括在不同的情况下调用,因此路径会有所不同。我通过.htaccess设置了一个php_include路径,但我需要设置的测试服务器不能在.htaccess中使用php命令运行!我想弄清楚一起把所有东西都拉到一起的快速方法。
我有多个文件,包括相同的'项目'文件,而后者又包含函数等。我有一个$ ROOT变量设置来存储我的目录的绝对路径,但是这不能用于包含php.ini,我不能轻易做到,无论如何都包括在内。
我对bootstrapping有一点了解,我很乐意通过htaccess来传递所有内容,但我并不真正有一个如何快速,轻松地实现类似内容的概念(并且这对于通过AJAX?)
我不能依赖server_document_root,因为它可能需要驻留在子目录中。
这不是基于类的,而是具有数据库内容的值对象..根目录中有主要的home.php,view.php等,然后是带有主脚本和值对象的程序/目录,然后是实用程序和包含微型视图类型类的组件文件夹。
如果我有时间的话,我会重做一切,但是现在我正试图想办法让一切都正常工作(最好不要把所有东西都放到一个文件夹中:p)答案 0 :(得分:3)
在home.php
,或view.php
包含您的“主”文件,这将包含您应用的其余部分。
require 'base.php';
如果home.php
或view.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()
进行一些检查