如何在drupal 7中包含php文件

时间:2014-04-13 19:21:20

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

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

我已经通过多种方式对我的代码进行了测试,并且我确信'包括'当我在我的网站上运行Cron时,让我得到一个WSOD。

我已经用Google搜索了这个,我试过了:

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手动编写代码。

4 个答案:

答案 0 :(得分:10)

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');

干杯, Ĵ

答案 1 :(得分:5)

尝试这种方式

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

或Drupal方式

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

答案 2 :(得分:5)

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

  1. module_load_include(); function - Drupal API documentation - 在您需要的其他模块中包含任何PHP文件,
  2. your_module.info 文件中的
  3. files[] = ...自动加载包含您自己模块中的类和接口 - Writing .info file文档。
  4. Libraries模块提供了自己的方式来包含库中的外部PHP文件。

答案 3 :(得分:0)

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