Если видимые пути полностью совпадают, даже в регистре символов, то дело скорее всего в невидимых символах. Например это может быть перевод строки при чтении из текстового файла.
Для того чтобы их увидеть, можно набросать функцию типа такой
function print_nonprintable($string) {
$i = -1;
$ret = '';
while(isset($string[++$i])) {
$ret .= ctype_print($string[$i]) ? $string[$i] : urlencode($string[$i]);
}
return $ret;
}
И использовать её в сообщении об ошибке. Тогда проблема сразу станет видна.
Правда, эта функция изуродует русский текст, но с поддержкой многобайтных символов у меня сходу решения нет