Другой путь на диске. Windows

Проблемы/вопросы, связанные с запуском под различными платформами и конфигурациями.

Модератор: immortal

Ответить
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич

Другой путь на диске. Windows

Сообщение Bagir »

На момент знакомства с МД у меня уже был установленный Апачи сервер и работал сайт для других моих задач. Конечно же не хотелось поднимать параллельно второй сервер, и тем более ставить второй комп. Решил попробовать разместить МД в другую папку, чтобы на одном сервере работали сразу два сайта по разным портам. Все получилось, но после обновления приходится менять пути каждый раз снова. Приведу примеры, где и что я нашел. Может быть чего то я просто не увидел, а что то получится обойти в будущих обновлениях, чтобы не привязываться к пути C:\_majordomo\htdocs, прописанному в php файлах.

Отдельно хочу предложить изменить понимание пути в SERVER_ROOT. Что если определить этот путь как указатель на место (папку), где лежат папки Apache2.2, MySQL, PHP и т.д. Другими словами SERVER_ROOT будет указывать на папку, с папками компонентами сервера. Переопределять этот путь в файле config.php как

Код: Выделить всё

Define('SERVER_ROOT', 'c:/_majordomo/server'); // в конце косой черты быть не должно        
добавив к пути /server исходя из текужего размещения файлов в дистрибутиве по установке системы МД. Использовать SERVER_ROOT исключительно для доступа к файлам компонентам сервера, например к php.exe, но не для доступа к файлам МД

Для файлов МД есть DOC_ROOT. Сейчас он также определяется в config.php как

Код: Выделить всё

Define('DOC_ROOT', dirname(__FILE__));
То есть будет взят путь на диске, где лежит config.php и index.php, а следовательно и остальные файлы МД. И в дальнейшем для доступа к которым использовать только DOC_ROOT.

Сейчас это все так, но в php файлах сайта используются разные варианты, которые работают только при оригинальном размещении сервера и папки с файлами сайта. Если для компонентов сервера всегда отталкиваться от SERVER_ROOT, а для файлов сайта от DOC_ROOT, то получается папку с сайтом можно будет разместить где угодно, и он будет работать на сервере, который может находится в любом месте. Возможно это не имеет особого смысла, если МД был установлен на чистую машину и более ничего на ней размещать не планируется. Но если сервер уже был, то подобный подход к путям сайта очень актуален. В любом случае хуже точно не будет.

По возможности для получения путей к другим файлам, в php файлах нужно отталкиваться не от их размещения на диске, а от констант SERVER_ROOT и DOC_ROOT. Главное чтобы в этом файле был включен config.php

Код: Выделить всё

include_once("./config.php");
Теперь про изменения:

.\config.php
В этом файле требуется настроить пароль к SQL базе, если конечно он установлен в sql. Лично я люблю все запирать хоть и плохонький, но замочек. Так же тут настраивается порт сервера и сам путь SERVER_ROOT. Этот файл не обновляется и будет достаточно настроить его один раз.

Код: Выделить всё

 Define('DB_PASSWORD', ''); // Пароль на sql
 Define('BASE_URL', 'http://127.0.0.1:80');              // Your base URL:port (!!!)
 Define('SERVER_ROOT', 'c:/_majordomo/server');    // в конце косой черты быть не должно     
.\cycle.php
Пробуем подменить на путь SERVER_ROOT

Код: Выделить всё

//   $threads->phpPath = '..\server\php\php.exe';
   $threads->phpPath = SERVER_ROOT.'\php\php.exe';
.\obj.bat
Нужно получить путь к php.exe Сейчас используется вариант отталкивания от пути самого obj.bat. Варианты: либо правим файл и каждый раз после обновления копируем обратно, либо надо подумать как вытащить значение SERVER_ROOT из config.php средствами bat файла. Так то это не должно быть затратной операцией.

.\megad.php
Будет полностью заменен при обновлении на пустую болванку! Актуально для обладателей такого железа как МегаД. Для остальных вообще не важно что в этом файле. Варианты:
1. Я вполне неплохо сдружился с МегаДевайсом, и мог бы поддерживать обновление этого файла в дистрибутиве МД сам.
2. Просто после обновления копируем этот файл обратно.
3. Отключить обновление этого файла.

.\pChart\pics.php и s.php
Путь к файлам шрифтов. Возможно будет не актуально в связи в появлением pChart2 и jgraph

Код: Выделить всё

C:\_majordomo\htdocs\pChart\Fonts\...
.\modules\saverestore\saverestore.class.php
т.к. я в самом начале предложил добавить /server к пути в SERVER_ROOT, тут потребуется убрать /server

Код: Выделить всё

//   exec(SERVER_ROOT."/server/mysql/bin/mysqldump --user=root --no-create-db --add-drop-table --databases ".DB_NAME.">".$filename);
   exec(SERVER_ROOT."/mysql/bin/mysqldump --user=root --no-create-db --add-drop-table --databases ".DB_NAME.">".$filename);
.\rc\scripts\vlc_play.au3
Я не помню какой был точно путь в дистрибутиве МД. Что то типа этого. По моему мнению apps должны лежать в папке с компонентами сервера. Следовательно, нужно взять путь SERVER_ROOT, добавить у нему apps и vlc

Код: Выделить всё

ShellExecute ("C:\_majordomo\apps\vlc\vlc.exe",'"' & $CmdLine[1] & '"')
Это пока что все чего нашел. И касается установки под Windows.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Контактная информация:

Re: Другой путь на диске. Windows

Сообщение sergejey »

config.php не переписывается с обновлением, так что там, в принципе, менять не нужно. насчёт остального подумаю как лучше будет.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Ответить