2015-05-22 5 views
2

Ну, я все еще очень смущен, как это возможно. Посмотрите на следующие две строки кода:PHP require_once Абсолютный путь против относительного пути (не работает)

Код на connection.php в классе папку:

require_once '../config/constants.php'; 

require_once dirname(__DIR__).'/config/constants.php'; 

второй работает совершенно нормально, но первый бросает ошибку :

No such file in ...... on line... in Connection.php 

У меня на нервы, в чем разница между двумя о? В годы программирования я никогда не сталкивался с такой проблемой? Я пропустил некоторые моменты?

Если у вас есть какая-либо документация, которую вы хотели бы предложить, укажите. Я хотел бы иметь хорошую базу знаний, а не просто решить проблему.

Структура каталогов:.

enter image description here

+2

Удалить часть '../' из вашего первого включения и изменить ее на: '. /' – Rizier123

+0

@ Rizier123, любую документацию, которую вы хотели бы предложить? Я хотел бы иметь хорошую основу знаний, чем просто решить проблему. – tika

+1

'../' означает родительский каталог '. /' Относительный путь из вашего текущего каталога – Rizier123

ответ

4

../ обозначает родительский каталог, по сравнению с той, вы находитесь в данный момент Таким образом, ваша первая строка говорит «идти один каталог вверх и искать config/constants.php in there ". То, что вы хотели бы использовать с относительным путем здесь, - ./ (обратите внимание на одну точку), которая обозначает ваш текущий каталог.

Это не имеет никакого отношения к программированию в конкретном, это скорее вещь файловой системы.

Вы можете использовать это в качестве справки:

  • не ведущий / (нет точек, просто слэш) означает абсолютный путь
  • ведущий ./ (одну точку) означает текущий каталог
  • ведущий ../ (две точки) означает одну директорию вверх
  • Нет ведущих точек или слэшей - это то же самое, что и с одной точкой - относительно текущей.

Update (для учета редактируемого вопрос):

Что имеет что-то делать с программированием и PHP в частности, то, что считается «текущий» каталог, как правило, один, где вы изначально выполнил сценарий. В среде CLI, которая может отличаться, но если вы получаете доступ к скрипту через Интернет, это местоположение файла PHP, с которым вы напрямую связываетесь . Например. если вы укажете свой браузер на example.com/test.php, то где бы вы ни находились, находится ваш каталог.

Это может быть изменено chdir() конечно.

+0

, но мне нужно перейти в родительский каталог, чтобы получить доступ к другой папке, не так ли? Посмотрите на структуру каталогов. ** Доступ к constants.php из Connection.php ** – tika

+0

Обновлен ответ – Narf

Смежные вопросы