0

私はこのQ&Aが言うようにほぼやっています:

$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は機能しましたが、ファイルが見つかりませんでした。ブール値のfalseを取得した場合、たとえば

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検索する正しいパターンを設定するために使用します。

(Drupal7)

于 2012-06-18T13:52:02.540 に答える