Установка PHP в UniFi (Windows)
ИЗМЕНЕНО: страница для скачивания mongo была неверной. Подправил на правильную.
Меня ужасно достало, что контроллер UniFi постоянно падал при каждом неверном запросе с php в качестве типа файла, поэтому я наконец-то пошёл искать лучшее решение. Этот способ не использует привычный phpservlet.jar из PECL, так что он не такой уж и древний 😉.
Это инструкция для Windows, но установка на Linux будет примерно такой же, за исключением начальных директорий, а шаг №7 там будет совсем другим.
Скачанные файлы, используемые в этом руководстве:
PHP:
Подойдет любая версия (лучше последняя, конечно). Скачайте версию VC9 non-thread safe.
PHP/Java Bridge: сайт PHP/Java Bridge
Скачайте «binary» файл. Это ключ ко всему делу — благодаря ему можно использовать любую версию PHP без проблем.
MongoDB PHP Driver: страница PHP MongoDB на GitHub
Это драйвер mongo, который позволит вам работать с базой данных UniFi через PHP.
::: Шаг 1:
Сделайте резервную копию установки UniFi. Остановите её, если нужно, и просто скопируйте папку webapps в безопасное место.
::: Шаг 2:
В зависимости от того, хотите ли вы использовать PHP внутри основного программного обеспечения UniFi или отдельно от него, этот шаг будет отличаться. Я считаю, что софт UniFi хорош и без PHP, поэтому отделил PHP от него (вы же знаете старую пословицу — если не ломается, не чини).
ВАЖНО: если вы отделите PHP от бэкенда UniFi, всё равно сможете работать с базой данных.
Для этого создайте новую папку внутри webapps. Назовите её как угодно — это будет то, что нужно вводить в адресной строке для доступа. Например, если назвать папку php, придётся вводить localhost:8443/PHP/ для доступа к вашим PHP-скриптам.
::: Шаг 3:
Распакуйте скачанный php/java bridge .jar файл с помощью WinRar или команды java -jar. Извлеките папку WEB-INF в созданную вами папку.
Вот и вся интеграция с UniFi! Просто и быстро!
::: Шаг 4:
Распакуйте вашу версию PHP VC9 non-thread safe в корень диска, например, в папку \PHP.
::: Шаг 5:
Настройте PHP под себя или используйте рекомендуемый файл php.ini-recommended (переименуйте его в php.ini).
Найдите в php.ini строку «extension_dir». Раскомментируйте её, убрав точку с запятой в начале, и измените путь на каталог расширений PHP:
extension_dir=«C:\PHP\ext»
::: Шаг 6:
Откройте архив с драйвером mongoDB. Выберите правильный файл для вашей версии PHP, обратите внимание на версию VC9 nts. Распакуйте этот файл в папку PHP\ext.
В php.ini найдите список расширений формата «extension=php_***.dll». В самый конец добавьте:
extension=php_mongo.dll
Сохраните и закройте файл.
::: Шаг 7:
Добавьте папку PHP в переменную окружения PATH.
ПКМ по Мой компьютер → Свойства.
В XP вкладка «Дополнительно».
В Windows 7 — «Дополнительные параметры системы» слева.
Кликните «Переменные среды».
Найдите в системных переменных PATH, дважды кликните для редактирования. В конец строки добавьте (если нет точки с запятой — добавьте её):
...;C:\PHP\
Нажмите ОК для сохранения.
Рекомендуется перезагрузить компьютер, чтобы переменные обновились полностью. Если это невозможно, можно просто запустить новый процесс — он получит обновлённые переменные.
::: Шаг 8:
Надеюсь, вы всё сделали правильно. Запустите сервис или исполняемый файл UniFi. Если всё отлично, сможете обращаться к вашим PHP-скриптам по адресу, указанному выше (в зависимости от имени папки):
localhost:8443/PHP
Теперь вы можете использовать PHP для доступа к базе данных UniFi. Подробно о том, как это делать, — тема для отдельного руководства. Вот полный мануал от PHP про работу с MongoDB: php.net/manual/en/book.mongo.php
Вот и всё! Пару важных замечаний:
- Скрипты в этой папке будут доступны всем, включая посетителей гостевых сетей, поэтому их нужно защищать самостоятельно (простая безопасность на PHP — уже поможет).
- Скрипты обслуживаются через https. Можно сделать доступ и по обычному http, но это выходит за рамки этого урока.
- Работая с базой, ОБЯЗАТЕЛЬНО понимайте, что меняете. Можно легко сломать данные, которые использует UniFi.
- Можно интегрировать PHP в весь веб-сервер, чтобы он работал во всём ПО UniFi, а не только в одной папке. Если интересно — напишите мне в личку, помогу настроить.
- При использовании cURL в PHP берите версию 5.3 и выше — в версиях ниже есть серьёзные проблемы с утечками памяти.
Буду очень рад любым комментариям и предложениям!
ИЗМЕНЕНО: страница для скачивания mongo была неверной. Подправил на правильную.
Меня ужасно достало, что контроллер UniFi постоянно падал при каждом неверном запросе с php в качестве типа файла, поэтому я наконец-то пошёл искать лучшее решение. Этот способ не использует привычный phpservlet.jar из PECL, так что он не такой уж и древний 😉.
Это инструкция для Windows, но установка на Linux будет примерно такой же, за исключением начальных директорий, а шаг №7 там будет совсем другим.
Скачанные файлы, используемые в этом руководстве:
PHP:
Подойдет любая версия (лучше последняя, конечно). Скачайте версию VC9 non-thread safe.
PHP/Java Bridge: сайт PHP/Java Bridge
Скачайте «binary» файл. Это ключ ко всему делу — благодаря ему можно использовать любую версию PHP без проблем.
MongoDB PHP Driver: страница PHP MongoDB на GitHub
Это драйвер mongo, который позволит вам работать с базой данных UniFi через PHP.
::: Шаг 1:
Сделайте резервную копию установки UniFi. Остановите её, если нужно, и просто скопируйте папку webapps в безопасное место.
::: Шаг 2:
В зависимости от того, хотите ли вы использовать PHP внутри основного программного обеспечения UniFi или отдельно от него, этот шаг будет отличаться. Я считаю, что софт UniFi хорош и без PHP, поэтому отделил PHP от него (вы же знаете старую пословицу — если не ломается, не чини).
ВАЖНО: если вы отделите PHP от бэкенда UniFi, всё равно сможете работать с базой данных.
Для этого создайте новую папку внутри webapps. Назовите её как угодно — это будет то, что нужно вводить в адресной строке для доступа. Например, если назвать папку php, придётся вводить localhost:8443/PHP/ для доступа к вашим PHP-скриптам.
::: Шаг 3:
Распакуйте скачанный php/java bridge .jar файл с помощью WinRar или команды java -jar. Извлеките папку WEB-INF в созданную вами папку.
Вот и вся интеграция с UniFi! Просто и быстро!
::: Шаг 4:
Распакуйте вашу версию PHP VC9 non-thread safe в корень диска, например, в папку \PHP.
::: Шаг 5:
Настройте PHP под себя или используйте рекомендуемый файл php.ini-recommended (переименуйте его в php.ini).
Найдите в php.ini строку «extension_dir». Раскомментируйте её, убрав точку с запятой в начале, и измените путь на каталог расширений PHP:
extension_dir=«C:\PHP\ext»
::: Шаг 6:
Откройте архив с драйвером mongoDB. Выберите правильный файл для вашей версии PHP, обратите внимание на версию VC9 nts. Распакуйте этот файл в папку PHP\ext.
В php.ini найдите список расширений формата «extension=php_***.dll». В самый конец добавьте:
extension=php_mongo.dll
Сохраните и закройте файл.
::: Шаг 7:
Добавьте папку PHP в переменную окружения PATH.
ПКМ по Мой компьютер → Свойства.
В XP вкладка «Дополнительно».
В Windows 7 — «Дополнительные параметры системы» слева.
Кликните «Переменные среды».
Найдите в системных переменных PATH, дважды кликните для редактирования. В конец строки добавьте (если нет точки с запятой — добавьте её):
...;C:\PHP\
Нажмите ОК для сохранения.
Рекомендуется перезагрузить компьютер, чтобы переменные обновились полностью. Если это невозможно, можно просто запустить новый процесс — он получит обновлённые переменные.
::: Шаг 8:
Надеюсь, вы всё сделали правильно. Запустите сервис или исполняемый файл UniFi. Если всё отлично, сможете обращаться к вашим PHP-скриптам по адресу, указанному выше (в зависимости от имени папки):
localhost:8443/PHP
Теперь вы можете использовать PHP для доступа к базе данных UniFi. Подробно о том, как это делать, — тема для отдельного руководства. Вот полный мануал от PHP про работу с MongoDB: php.net/manual/en/book.mongo.php
Вот и всё! Пару важных замечаний:
- Скрипты в этой папке будут доступны всем, включая посетителей гостевых сетей, поэтому их нужно защищать самостоятельно (простая безопасность на PHP — уже поможет).
- Скрипты обслуживаются через https. Можно сделать доступ и по обычному http, но это выходит за рамки этого урока.
- Работая с базой, ОБЯЗАТЕЛЬНО понимайте, что меняете. Можно легко сломать данные, которые использует UniFi.
- Можно интегрировать PHP в весь веб-сервер, чтобы он работал во всём ПО UniFi, а не только в одной папке. Если интересно — напишите мне в личку, помогу настроить.
- При использовании cURL в PHP берите версию 5.3 и выше — в версиях ниже есть серьёзные проблемы с утечками памяти.
Буду очень рад любым комментариям и предложениям!
