所以我有这些文件:
/|+包括/|||+数据库.php|+推车/|||+表格.php|+cart.php
我的cart.php显示了一个由table.php生成的表(包含的文件)。我有一个单独的表文件的原因是,在cart.php中进行一些操作后,我必须再次生成表——删除当前表,并用Ajax加载一个新表。然而,我的table.php文件有这样一行:
require_once("include/database.php");
这是非常有问题的,因为当文件包含在cart.php中时,路径是有意义的。但当它自己调用时,当前目录将是cart/,并且cart/中没有include目录。
有什么办法解决这个问题吗?我想避免使用大的绝对路径。有没有可能告诉PHP,无论在哪里调用include/,都应该始终搜索文件?是的,我应该在哪里做(在哪个文件中)?
如果您使用.htaccess,您可以设置include路径:
.htaccess:
php_value include_path "/path/to/include/"
php文件:
require_once get_include_path().'file.php';
另一种方式:
require_once($_SERVER['DOCUMENT_ROOT']."/include/database.php");
在这种情况下,我建议在常量中定义应用程序的(绝对)根路径,例如,将其添加到您的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');
在表格中.php
require_once('../include/database.php');
好吧,重读你的问题,看起来你想autoload
的东西,但我们没有足够的信息来确定你的类是否以有利于自动加载的方式设置。