За последние 24 часа нас посетили 10578 программистов и 1083 робота. Сейчас ищут 410 программистов ...

Не срабатывает относительный путь в file_exist

Тема в разделе "PHP для новичков", создана пользователем Познающий php, 26 июл 2017.

  1. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    Стою на асфальте в лыжи обутый, то ли лыжи не едут, то ли я ебанутый...

    Почему вот так не пашет file_exists('../app/Cont/Main.php'), а так работает file_exists(__DIR__ .'/../app/Cont/Main.php')?
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.901
    Симпатии:
    968
    всё верно. первое считается от текущего контекста - а он может быть разным, второе - от контекста текущего файла.
     
  3. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    Я не понимать. Это конкретно эта функция не доверяет относительным путям? В доке ничего не сказано. Я вроде подключал, например, include так и все срабатывало, а тут не пашет.

    Как в итоге лучше указывать ВЕЗДЕ по стандарту чтобы все всегда работало? Всегда DIR что ли таскать за собой
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.901
    Симпатии:
    968
    Да, __DIR__ или какую-то другую константу по контексту. Так код получается вообще офигенно предсказуемым, понятным и стабильным.
     
    Познающий php нравится это.
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.528
    Симпатии:
    1.276
    Адрес:
    Лень
    во функции dirname () есть магический второй аргумент,
    тобишь
    нам надо подключить файл /App/System/module.php
    а
    наш скрипт лежит в директории /App/System/Main/index.php
    в нем код:
    index.php
    PHP:
    1. <?
    2.  
    3. echo dirname ( __FILE__, 2 ) . '/module.php';
    вуаля:
    App/System/module.php