Управление структурой каталогов для PHP-скрипта - PullRequest
0 голосов
/ 28 сентября 2010

Я пишу загрузчик изображений на основе профиля, и он структурирован в несколько файлов:

lib/
profiles/
getbooru
install
readme
uninstall

Если я включу эти файлы следующим образом:

include 'lib/curl';
include 'lib/string';
foreach(glob('profiles/*') as $profile)
    include $profile;

Только для программыработает, если вы вызываете его из каталога программы.Если я изменю это на следующее:

set_include_path('/usr/local/share/getbooru');
include 'lib/curl';
include 'lib/string';
foreach(glob('/usr/local/share/getbooru/profiles/*') as $profile)
    include $profile;

Тогда он заставит пользователей запустить скрипт установки, чтобы поместить файлы в этот каталог, и он больше не будет работать нигде.В этом случае getbooru является символической ссылкой на /usr/local/bin/getbooru.

Хорошая новость: Я заметил, что если я пытаюсь получить имя файла запущенного скрипта, даже если он выполняется черезsymlink всегда будет возвращать «реальное» имя сценария (чтобы я не включал несуществующие данные из /usr/local/bin).

Как я могу сделать эту программу переносимой для запуска в любом месте?

Ответы [ 2 ]

1 голос
/ 28 сентября 2010

Подход, который я видел, состоит в том, чтобы извлечь базовый путь из скрипта конфигурации и сохранить его в файле конфигурации приложений, например, global $base_path; $base_path='/var/www/myapp/';.Затем вы включаете, как это global $base_path; include $base_path.'lib/curl';.Вы должны быть осторожны, чтобы включить файл конфигурации, прежде чем делать какие-либо другие включения.

1 голос
/ 28 сентября 2010
set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...