0

我正在做的大约就像这个问答所说的那样:

$filenames = glob("../webform/components/*.inc");
foreach ($filenames as $filename)
{
    include $filename;
    echo $filename;
} 

但我得到的不是一堆包含的文件,而是:

Warning: Invalid argument supplied for foreach() in include_once() ...

看来$filenames是空的。为什么会这样?(我已经检查过该文件夹是否包含 .inc 文件!)

4

2 回答 2

1

做一个var_dump($filenames)。你得到一个空数组,例如

array(0) {
}

如果是这样,glob 工作,但没有找到任何文件。如果你得到一个布尔假,例如

bool(false)

然后 glob 完全失败了 - 路径不正确、目录不可读等......

于 2012-06-15T15:44:45.237 回答
0

如果您在 Drupal 中从模块内执行此操作,则使用相对路径可能不起作用,因为index.phpinDRUPAL_ROOT是运行代码的位置。

您可能希望将其更改为以下 (1) 或 (2):

// Assuming your webform folder is at sites/all/modules/[MODULE_NAME]/webform
$pattern = drupal_get_path('module', 'MODULE_NAME') . '/webform/components/*.inc'; // (1)
// Assuming the context is MODULE_NAME.module.
// $pattern = dirname(__FILE__) . '/webform/components/*.inc'; // (2)
$filenames = glob($pattern);
foreach ($filenames as $filename) {
    include $filename;
    echo $filename;
}

如果您是从模块外部而不是从 Drupal 站点根目录中的脚本执行此操作,请使用DRUPAL_ROOT设置正确的搜索模式。

(Drupal 7)

于 2012-06-18T13:52:02.540 回答