5

現時点で私は持っています:

$files = array_merge(
        glob($path_ . '*.js'),
        glob($path_ . '*.css'));

Windows でディレクトリが空の場合、空の配列が返されます。Linux で空の場合、何も返されません。

これにより、Linux で次のエラーが生成されます: 警告: array_merge() [function.array-merge]: Argument #1 is not an array

  • Windows: Apache:2.2.21 PHP:5.3.10
  • Linux/Debian: Apache:2.2.16 PHP:5.3.10

さらに調査とテストを行った結果、これは PHP のバグであることがわかりました: https://bugs.php.net/bug.php?id=53460

4

1 に答える 1

4

http://php.net/manual/en/function.glob.phpから:

一致したファイル/ディレクトリを含む配列を返します。一致したファイルがない場合は空の配列を返し、エラーの場合はFALSEを返します。

glob($path_ . '*.js') === FALSELinuxかどうかを確認します。この場合、許可エラーなどが発生している可能性があります。ドキュメントが示唆しているように、エラーがない場合は空の配列である必要があります。

また、ファイル/ディレクトリでケースを確認してください。Windowsは大文字と小文字を区別しないため、WindowsとLinuxの違いを説明できます。

于 2012-04-06T11:57:38.293 に答える