【问题标题】:How to include php file in drupal 7如何在drupal 7中包含php文件
【发布时间】:2014-04-13 19:21:19
【问题描述】:

我在 Drupal 7 中编写一个表单,我想“包含”一个 php 文件,它将我的数据库连接变量添加到我的代码中。

我已经以多种方式测试了我的代码,并且我确信当我在我的站点中运行 Cron 时,“包含”会让我得到一个 WSOD。

我已经用谷歌搜索过,我试过了:

include("/sites/all/libraries/php/connection.inc");

include("./sites/all/libraries/php/connection.inc");

include"./sites/all/libraries/php/connection.inc";

我也尝试了上面的“.php”扩展名。

我的最后一次尝试:

define('__ROOT__', dirname(dirname(__FILE__)));
include(__ROOT__.'/sites/all/libraries/php/connection.inc');

有时我在尝试运行 Cron 时遇到 WSOD,有时我在提交表单时页面样式会损坏。

在 Drupal 中手动包含 PHP 文件的正确方法是什么?请注意,我不想使用“Drupal 方式”来执行此操作或使用 webform 模块。我想用 PHP 手动编码。

【问题讨论】:

    标签: php drupal drupal-7 cron php-include


    【解决方案1】:

    libraries 目录只能用于存储通过库模块作为库交付的文件(参见此处https://drupal.org/project/libraries)。

    对于这两个示例,假设 library.inc 是我们的文件,relative_path_to 是基于模块目录到我们的 library.inc 文件的相对路径。

    仅包含您可以使用的文件:

    require(drupal_get_path('module', 'module_name') . '/relative_path_to/library.inc');
    

    并以 Drupal 方式 (https://api.drupal.org/api/drupal/includes!module.inc/function/module_load_include/7):

    module_load_include('inc', 'module_name', '/relative_path_to/library');
    

    干杯, j

    【讨论】:

    • 实际上,Drupal 方式就像您在此处发布的第一个示例一样。我肯定会推荐 Drupal 方式,因为它使用 DRUPAL_ROOT 作为根目录来包含所有文件。在 Drupal 环境中,这似乎是一个更清洁的解决方案。感谢您的回答!
    【解决方案2】:

    试试这个方法

    1) require 'includes/iso.inc';
    2) include_once  'includes/iso.inc';
    3) include ('includes/iso.inc');
    

    或 Drupal 方式

    include_once DRUPAL_ROOT . '/includes/iso.inc';
    

    【讨论】:

    • 您好!,我使用了include_once DRUPAL_ROOT . '/sites/all/libraries/php/connection.inc';,它就像一个魅力。现在,我的表单将表单数据存储在数据库中,我可以毫无问题地运行 Drupal Cron。非常感谢你们。
    【解决方案3】:

    在我看来,这些是正确的Drupal (7) 包含代码的方法:

    1. module_load_include(); 函数 - Drupal API documentation - 在需要时包含您或其他模块中的任何 PHP 文件,
    2. your_module.info 文件中的 files[] = ... 用于在您自己的模块中自动加载包含类和接口 - Writing .info file 文档。

    库模块提供了自己的方式来包含库中的外部 PHP 文件。

    【讨论】:

      【解决方案4】:

      第二个答案是正确的“Drupal 方式”。如果事物的位置发生变化,被接受为答案的那个有许多潜在的陷阱。使用 drupal_get_path 是最好的方法。如果您尝试包含在模块更新挂钩期间可能未完全引导的文件,则尤其如此。

      【讨论】:

      • 这似乎主要是评论而不是答案。对“第二个答案”的引用很脆弱,因为答案顺序可能会改变。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      相关资源
      最近更新 更多