Как избежать абсолютного пути для mime_content_type в PHP - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь загрузить некоторые файлы, и для этого мне также нужны mimetypes. Хотя для первых нескольких файлов mime_content_type вроде бы работало, я заметил, что когда (абсолютный) путь содержит определенные символы, он терпит неудачу.

Я пробовал несколько разных имен файлов и каталогов со следующими результатами:

$path = "C:\Users\Desktop\empty.txt";
mime_content_type($path);
//Warning: mime_content_type(C:\Users\Desktop{empty-square}mpty.txt): failed to open stream: No such file or directory

$path = "C:\Users\Desktop\tempty.txt";
mime_content_type($path);
//Warning: mime_content_type(C:\Users\Desktop   empty.txt): failed to open stream: No such file or directory

$path = "C:\Users\Desktop\xemptydir\xempty.txt";
mime_content_type($path);
//Warning: mime_content_type(C:\Users\Desktop{empty-square}mptydir{empty-square}mpty.txt): failed to open stream: No such file or directory

$path = "C:\Users\Desktop\lemptydir\lempty.txt";
mime_content_type($path);
//OK

Итак, после того как я увидел, что \t превращается в символ табуляции, стало немного яснее, что такие символы, как \e, \t, \n, \x, вызывают эту проблему. Я подумал, что побег поможет решить проблему, поэтому я попытался addslashes(), но это дало мне тот же результат. Так как я могу решить эту проблему?

редактировать

После публикации вопроса я заметил, что «пустые квадраты» (похожие на это □) исчезли, поэтому я поместил его в фигурные скобки, чтобы вы знали, что там есть пустой квадрат.

...