Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Drupal7中包含php文件_Php_Drupal_Drupal 7_Cron_Php Include - Fatal编程技术网

如何在Drupal7中包含php文件

如何在Drupal7中包含php文件,php,drupal,drupal-7,cron,php-include,Php,Drupal,Drupal 7,Cron,Php Include,我正在用Drupal7编写一个表单,我想“包含”一个php文件,将我的DB连接变量添加到我的代码中 我已经用几种方法测试了我的代码,我确信当我在我的站点中运行Cron时,“include”会让我得到一个WSOD 我在谷歌上搜索了一下,我试着: include("/sites/all/libraries/php/connection.inc"); include("./sites/all/libraries/php/connection.inc"); include"./sites/all/l

我正在用Drupal7编写一个表单,我想“包含”一个php文件,将我的DB连接变量添加到我的代码中

我已经用几种方法测试了我的代码,我确信当我在我的站点中运行Cron时,“include”会让我得到一个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手动编写代码。

试试这种方法

1) require 'includes/iso.inc';
2) include_once  'includes/iso.inc';
3) include ('includes/iso.inc');
还是德鲁帕尔方式

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

libraries目录只能用于存储通过libraries模块作为库发送的文件(请参见此处)

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

要仅包含可使用的文件,请执行以下操作:

require(drupal_get_path('module', 'module_name') . '/relative_path_to/library.inc');
用Drupal的方式()来做:

干杯,
第二个答案是正确的“Drupal方式”。如果事物的位置发生变化,那么被接受为答案的一个问题有许多潜在的陷阱。使用drupal\u get\u路径是最好的方法。如果您试图在模块更新挂钩期间包含一个可能未完全引导的文件,则这一点尤其正确。

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

  • 模块加载包含()函数--在需要时包括来自您或其他模块的任何PHP文件
  • 文件[]=…
    在您的_module.info文件中自动加载,包括您自己模块中的类和接口-文档

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

    Hi here!,我使用了
    include\once DRUPAL\u ROOT/sites/all/libraries/php/connection.inc'它就像一个符咒。现在,我的表单将表单数据存储在数据库中,我可以毫无问题地运行Drupal Cron。非常感谢大家。这似乎主要是一个评论,而不是一个答案。对“第二个答案”的引用是脆弱的,因为答案顺序可能会改变。实际上,Drupal的方式就像您在这里发布的第一个示例一样。我绝对推荐Drupal方式,因为它使用Drupal_ROOT作为根目录来包含所有文件。在Drupal环境中,它似乎是一个更干净的解决方案。谢谢你的回答!
    
    module_load_include('inc', 'module_name', '/relative_path_to/library');