Php 包括来自具有foreach循环的文件夹的文件—;不工作。为什么?

Php 包括来自具有foreach循环的文件夹的文件—;不工作。为什么?,php,mysql,drupal,include,glob,Php,Mysql,Drupal,Include,Glob,我大致上是这样说的: 但不是一堆包含的文件,我只得到: Warning: Invalid argument supplied for foreach() in include_once() ... 似乎$filenames为空。为什么会是这样?(我已经检查了文件夹是否包含.inc文件!)执行var\u转储($filename)。您是否得到一个空数组,例如 array(0) { } 如果是这样,glob工作了,但是没有找到任何文件。如果得到一个布尔值false,例如 bool(false)

我大致上是这样说的:

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

Warning: Invalid argument supplied for foreach() in include_once() ...
似乎
$filenames
为空。为什么会是这样?(我已经检查了文件夹是否包含.inc文件!)

执行
var\u转储($filename)
。您是否得到一个空数组,例如

array(0) {
}
如果是这样,glob工作了,但是没有找到任何文件。如果得到一个布尔值false,例如

bool(false)

然后glob完全失败-路径不正确,目录不可读等等。

如果您在Drupal中从模块中执行此操作,则使用相对路径可能无法作为
索引。Drupal\u ROOT中的php
是您的代码的运行源

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

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


(Drupal7)

如果您尝试
glob(*.php),会发生什么情况然后只回显文件名?在调用
glob
之后,执行
print\r($filename)
并查看您实际得到了什么。是的,我没有在代码中包含这些,但我这样做了,它是空的。使用
var\u dump($filename)并显示输出
glob()
在出错时返回一个布尔值
false
,因此查看它是否出错或是否为空数组。我怀疑相对路径是错误的。是否需要这样的工作
foreach(glob(“../webform/components/*.inc”)作为$filename)
返回bool(false)。为什么会这样?我相信路径是正确的,我不知道为什么目录会不可读。有没有办法得到更详细的错误信息?@beth你有没有做过
var_dump
,如果有,结果是什么?是的,
var_dump
返回
bool(false)
,正如我上面的评论所说的那样。@beth是你的脚本与数据库一起使用的吗?我不确定这个问题的确切意思,但是是的,我正在使用Drupal,因此涉及到一个MySQL数据库。
bool(false)
// 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;
}