【问题标题】:Including Files from Different Directories包括来自不同目录的文件
【发布时间】:2012-02-18 16:13:30
【问题描述】:

所以我有这些文件:

/ | + 包括/ | | | + 数据库.php | + 购物车/ | | | + 表.php | + 购物车.php

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

require_once("include/database.php");

这很成问题,因为当文件从 cart.php 中包含时,路径才有意义。但是当它自己调用时,当前目录会是cart/,而cart/中没有include目录。

有没有办法解决这个问题?我想避免使用大的绝对路径。是否可以告诉 PHP 无论在哪里调用 include/ 都应该始终搜索文件?是的,我应该在哪里(在哪个文件中)这样做?

【问题讨论】:

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


    【解决方案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");
    

    【讨论】:

    • 这就是我要找的。​​span>
    【解决方案2】:

    在这种情况下,我建议在常量中定义应用程序的(绝对)根路径,例如,将其添加到您的 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');
    

    【讨论】:

    • 啊,很好。感谢不断的提示,让它更干净
    【解决方案3】:

    在table.php中

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

    好吧,重新阅读您的问题,您似乎想要autoload 的东西,但我们没有足够的信息来确定您的类是否以有利于自动加载的方式设置。

    【讨论】:

    • 好吧,"../include/database/" 的问题在于,当从 cart.php 中包含时它就不起作用了。哦,还有课。我确实更喜欢程序方法。
    猜你喜欢
    • 2012-01-27
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 2016-07-20
    • 1970-01-01
    • 2012-02-08
    相关资源
    最近更新 更多