cr1gger
@cr1gger
Все дороги ведут в Рим — встретимся в Риме!

Is_file, file_exist говорят что файла нет, но он есть?

Входные данные: D:\OpenServer\domains\yii2-base\modules\youtube\rest\openapi\components\description.yml
Проверка на файл:
if (!is_file($file_path)) {
            var_dump(is_file($file_path), file_exists($file_path)); // false, false
            throw new NotFoundHttpException(Yii::t('yii', 'File not found: ' . $file_path));
        }


И в итоге я получаю:
Not Found: File not found: D:\OpenServer\domains\yii2-base\modules\youtube\rest\openapi\components\description.yml

Открываю проводник, по этой же ссылке из эксепшена и видим что файл существует:
6151c64b104d3162059674.png

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


И использовать её в сообщении об ошибке. Тогда проблема сразу станет видна.
Правда, эта функция изуродует русский текст, но с поддержкой многобайтных символов у меня сходу решения нет
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы