2012-01-25 169 views
0

所以我有这些文件:包含文件在不同的目录

 
/
| 
+ 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 /,并且cart /中没有include目录。

有什么办法解决这个问题吗?我想避免使用大绝对路径。是否有可能告诉PHP包含/应该总是搜索文件,无论它被称为何处?它是,我应该在哪里做(在哪个文件中)?

回答

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"); 
+1

这就是我一直在寻找。 – winck

0

在table.php

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

好,重读你的问题,它看起来像你想的东西autoload,但我们没有足够的信息来确定,如果你的类是在有利于方式成立自动加载。

+0

好了,有了“../include问题/ DAT基地/“是,那么它包括cart.php时不会工作。哦,还有班级。我更喜欢程序方法。 – winck

+0

如果你从cart.php中包含表格,它将起作用。 – MetalFrog

1

在这种情况下,我会建议定义应用程序的(绝对)的根路径在恒定的,例如,将它添加到你的config /引导:

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

然后,你可以包括使用常数,如:

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

啊,很好。感谢您的不断提示,使它更清洁 – winck

相关问题