Как включить / обязать скрипты использовать локальные файлы - PullRequest
0 голосов
/ 12 июня 2009

Моя ситуация: у меня есть класс, который я хочу использовать в нескольких местах, поэтому я поместил его высоко в дереве каталогов:

/www/libs/classA/classA.php

Он использует файл конфигурации, расположенный в том же каталоге с именем config.ini, и ссылается на него локально в конструкторе. Однако, когда я включаю его из сценария в другой каталог, он пытается загрузить файл конфигурации из каталога, в котором находится вызывающий сценарий. Можно ли как-то посмотреть каталог, в котором находится включаемый файл? В идеале я мог бы переместить скрипт в другой каталог и не вносить в него никаких изменений.

Ответы [ 2 ]

4 голосов
/ 12 июня 2009

Вы должны использовать абсолютный путь при включении / загрузке файлов. И вы можете получить этот абсолютный путь с помощью __FILE__ константы и dirname функции :

dirname(__FILE__).'/config.ini'

Это даст вам пять абсолютных путей к файлу config.ini в том же каталоге, в котором находится исполняемый в данный момент файл скрипта. Поэтому, когда этот код выполняется в вашем файле скрипта classA.php, вы получите /www/libs/classA/config.ini.

0 голосов
/ 12 июня 2009

Вы должны иметь возможность включить / запросить файл из каталога текущего файла, если в аргументе нет информации о пути, например, включают в себя ( 'file2.php') ;. Но я думаю, что даже если у вас есть «./file2.php»), он станет относительным к каталогу первого включенного / выполненного скрипта.

Мне нравится метод dirname (____ FILE ____) ..., но я считаю, что в случае, когда определенный набор файлов предназначен для всегда развертывания в одном и том же каталоге, прямое включение файла способствует согласованности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...