PHPの特定のバージョン、ビルドによるようですが、以下のようなエラーが出てしまうことがあるようです。
Fatal error: [] operator not supported for strings
これは要素を配列の最後に追加するという記述
$array[] = $var;
array_push() 等の関数の説明書にも正しいものとして記述されているのですが、何故かエラーになってしまうというものです。
私の場合は、Debianの
$ php -v
PHP 4.3.10-16 (cli) (built: Aug 26 2005 23:01:56)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
で発生しました。
うちの鯖のkonig(PHP 4.4.2)や、decalto(PHP 5.1.2)では発生しませんでした。4.3.10を使った事は殆ど無いので4.3.10固有のバグで世間的には処理済のことかもしれません。
ぐぐるとそのようなエラー表示になって止まってしまっているサイトも何箇所かあるようでしたが、日本語で対処方法が書いてあるサイトが見つからなかったのでメモ。
次のようなコードでディレクトリの一覧を取得しようとして、
//まずディレクトリ一覧を取得
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..")
{
if(is_dir($file))
{
$logdir[] = $file;
}
}
}
closedir($handle);
エラー
そこで
//まずディレクトリ一覧を取得
settype ( $logdir, 'array'); //変数の型を配列にする
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..")
{
if(is_dir($file))
{
array_push($logdir, $file);
}
}
}
closedir($handle);
で解決。