Функция basename() в PHP учитывает региональные настройки. 1 Чтобы она могла правильно обработать имя пути с многобайтовыми символами, необходимо установить локаль, которая соответствует этим символам, с помощью функции setlocale(). 1
Если имя пути содержит символы, которые не соответствуют текущей локали, то поведение basename() может быть непредсказуемым. 1
Также есть информация, что при работе с многобайтовыми именами в формате UTF-8 функция basename() удаляет все нелатинские символы до первого латинского символа или знака препинания, но последующие нелатинские символы сохраняются. 2