包含来自不同目录的文件

时间:2012-01-25 13:18:19

标签: php ajax include include-path server-side-includes

所以我有这些文件:

/
|
+ include/
|   |
|   + database.php
|
+ cart/
|   |
|   + table.php
|
+ cart.php

我的cart.php显示的页面包含由table.php(包含文件)生成的表格。我为表分隔文件的原因是因为我必须在cart.php中执行某些操作后再次生成表 - 删除当前表并使用Ajax加载新表。但是,我的table.php文件有这一行:

require_once("include/database.php");

这很成问题,因为当文件包含在cart.php中时,路径才有意义。但是当它自己被调用时,当前目录将是cart /并且在购物车/中没有包含目录。

有没有办法解决这个问题?我想避免使用大的绝对路径。有可能告诉PHP包括/应该总是搜索文件,无论它在哪里被调用?它是,我应该在哪里(在哪个文件中)?

3 个答案:

答案 0 :(得分:1)

在这种情况下,我建议在常量中定义应用程序的(绝对)根路径,例如,将其添加到config / bootstrap:

// Absolute path to your application's root directory
define('APP_ROOT', '/var/www/vhosts/example.com/httpdocs');

然后你可以包括使用那个常量,比如:

require_once(APP_ROOT . '/include/database.php');

答案 1 :(得分:1)

如果您使用.htaccess,则可以设置包含路径

<强> htaccess的:

php_value include_path "/path/to/include/"

php文件:

require_once get_include_path().'file.php';


另一种方式

require_once($_SERVER['DOCUMENT_ROOT']."/include/database.php");

答案 2 :(得分:0)

在table.php中

require_once('../include/database.php');

好了,重新阅读您的问题,看起来您想要autoload件事,但我们没有足够的信息来确定您的课程是否以有利于自动加载的方式设置。