Read a config file into an array
This code looks pretty good, but you seem to have largely reinvented parse_ini_file($filename, false, INI_SCANNER_TYPED).  All you need to add is the support for the search path.

do_parse() is inconsistent about returning a status code, and parse_file() fails to check it.

You should call explode("=", $line, 2), so that any = character in the value will be interpreted literally.