我做的大致像这个问答:
$filenames = glob("../webform/components/*.inc");
foreach ($filenames as $filename)
{
include $filename;
echo $filename;
}
但是,我只得到一堆包含的文件,
而不是:Warning: Invalid argument supplied for foreach() in include_once() ...
看来$filenames
是空的。为什么会这样呢?(我已经检查过该文件夹是否包含 .inc 文件!
做一个var_dump($filenames)
.您是否得到一个空数组,例如
array(0) {
}
如果是这样,则 glob 工作了,但没有找到任何文件。如果你得到一个布尔值假,例如
bool(false)
然后 glob 完全失败 - 路径不正确、目录不可读等......
如果你在 Drupal 中从模块中执行此操作,使用相对路径可能不起作用,因为DRUPAL_ROOT
中的index.php
是运行代码的地方。
您可能需要将其更改为下面的 (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)