Этот вопрос должен быть довольно простым ……. Чтобы воспроизвести сценарий, я настроил эту структуру:
Root
|----/test/abc.txt
|----index.php
index.php
$root = __DIR__;
echo is_file($root . "/test/abc.txt") ? "true" : "false";
echo is_file($root . "//test/abc.txt") ? "true" : "false";
echo is_file($root . "///test/abc.txt") ? "true" : "false";
echo is_dir($root . "/test") ? "true" : "false";
echo is_dir($root . "//test") ? "true" : "false";
echo is_dir($root . "///test") ? "true" : "false";
echo file_exists($root . "/test") ? "true" : "false";
echo file_exists($root . "//test") ? "true" : "false";
echo file_exists($root . "///test") ? "true" : "false";
Выход: is_file()
true
true
true
Выход: is_dir()
true
true
true
Выход: file_exists()
true
true
true
Начальная косая черта, похоже, «игнорируется» и, тем не менее, она все равно может найти местоположение файла. Я думал, что косая черта указывает на каталог папки, но я, похоже, не прав. что здесь происходит??
Это может быть проблемой настройки среды, но у меня еще нет настроенного linux для тестирования.
Моя текущая среда находится под ОС Windows, XAMPP.
Обновить:
Это также относится к is_dir()
а также file_exists()
функция.
Поскольку практически все, что имело значение, появилось в мире Unix, где разделитель является косой чертой, многие системы при переносе в среду Windows будут рассматривать любую косую черту как разделитель.
Конечный слеш допустим только в том случае, если он является каталогом.
Других решений пока нет …