surrealistic pillow пишет:Ошибка исчезла, однако во вложенных директориях подстроку не ищет, только в заданной директории, то есть рекурсия не работает
Должен искать. но, если в код добавили только проверку, то, очевидно, есть еще одна логическая ошибка.
Здесь
elseif(is_dir($file)){
searchInFiles($file.'\\', $needle);
}
результат возвращается "в никуда".
Нужно получать массив из вложенных каталогов в переменную, и объединять его с массивом текущего уровня. Либо использовать глобальную переменную для результата. Либо результирующий массив передавать аргументом по ссылке. Либо передавать аргументом, дополнять и возвращать.