Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1
RSS
Интеграция PHP 5 и выше в веб-сервер UniFi (Windows), UniFi Network
 
Установка PHP в UniFi (Windows)

ИЗМЕНЕНО: страница для скачивания mongo была неверной. Подправил на правильную.

Меня ужасно достало, что контроллер UniFi постоянно падал при каждом неверном запросе с php в качестве типа файла, поэтому я наконец-то пошёл искать лучшее решение. Этот способ не использует привычный phpservlet.jar из PECL, так что он не такой уж и древний 😉.

Это инструкция для Windows, но установка на Linux будет примерно такой же, за исключением начальных директорий, а шаг №7 там будет совсем другим.

Скачанные файлы, используемые в этом руководстве:
PHP: http://www.php.net  
Подойдет любая версия (лучше последняя, конечно). Скачайте версию 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 и выше — в версиях ниже есть серьёзные проблемы с утечками памяти.

Буду очень рад любым комментариям и предложениям!
 
Здравствуйте, JMichieli, надеюсь, у вас все хорошо. Спасибо, что делитесь своими знаниями с сообществом. Я пытался установить PHP для моего контроллера Unifi 3.2.1 на Windows Server 2012R2, следуя вашим инструкциям. Скачал последние версии (пробовал PHP RC11 / RC9 x86 nts), текущий PHP/JavaBridge и MongoDriver, затем выполнил ваши шаги с 1 по 7. После перезапуска службы Unifi получаю HTTP 404 (описание: Запрошенный ресурс недоступен). Похоже, что новая webapp не загружается, не разворачивается и не распознается Tomcat/Unifi. Я пробовал несколько других руководств без успеха: http://www.jvmhost.com/articles/run-php-applications-in-tomcat-7-with-php-java-bridge Если я копирую javabridge.war в каталог webapps Tomcat/Unifi, никакой реакции нет. Даже после нескольких перезапусков сервер не загружает .war файл и не разворачивает webapp с созданием папки. Варианты заканчиваются, чувствую себя бессильным. Заранее спасибо за любую помощь. Макс
 
Спасибо, я попробовал всё, что ты советовал, но безуспешно. Даже данные сессии не показывают использованные байты в реальном времени. Единственный способ увидеть байты, потребленные в реальном времени — это через /api/stat/guest, но я хочу узнать, можно ли создать фильтр, который будет отображать информацию только по текущей сессии.
 
Я выяснил, что PHP работает на Cloud Key, но только на порту 80... http://unifi-uc-ck-ip/phpinfo.php — работает... 😀 Папка: /usr/share/cloudkey-webui/www

Для гостевого портала с ваучером:  
Возможно ли, чтобы при клике пользователя на «подключиться» вызывался PHP-скрипт с передачей переменных? Например:  
http://unifi-uc-ck-ip/myphpscript.php?mail=demo%40demo.com&users_mac=aa:aa:aa:aa&voucher=12345-12345  
Но нужно, чтобы скрипт проверял правильность ваучера...  
Не хочу отправлять кучу писем, если пользователь неправильно введёт ваучер из-за опечатки... 😉

Спасибо,  
Томас
 
Проверь коллекцию User, где есть столбец is_guest с переменной true/false и last seen. Затем проверь коллекцию Session, где есть столбец user_id. Я не нашёл данных о мощности сигнала (например, 89%). Если ты видишь такой столбец, пожалуйста, скажи мне.
 
Я предполагаю, что Cloud Key — это платформа, созданная на базе Linux или FreeBSD или чего-то очень маленького. Даже если у вас есть root-доступ, может быть очень сложно установить дополнительное ПО, например PHP-сервер. Проще установить PHP-сервер отдельно и подключить его к базе данных. Но тут важно иметь доступ к самой базе данных. R.C.
 
Это возможно и для Cloud Key? Спасибо, Томас.
 
Спасибо за ответ, дружище. Я тоже использую PHP и могу показывать оставшееся время ваучера, но квота использованных данных хранится в коллекции guest, и когда запрашиваешь это поле (bytes), ничего не обновляется. Это потому, что использованные байты сохраняются в MongoDB только до тех пор, пока гость не выйдет из системы. Думаю, здесь должна быть комбинация данных из других коллекций, потому что на сайте контроллера (в разделе hotspot/wireless guests) данные обновляются каждые несколько секунд. Я также пытался изменить unifi.3.1.6.js, чтобы показывать эти данные без входа в контроллер, но модифицировать эти файлы очень сложно. Буду очень благодарен за любую помощь.
 
Я использовал скрипт на php5, чтобы показывать действительный ваучер и генерировать его. Если информация о оставшемся времени и доступном лимите клиентов хранится в базе данных, это возможно. Проверьте базу данных (MongoDB), чтобы подтвердить информацию. Рекомендую установить программу для просмотра MongoDB, например MongoVUE. Я установил php5 и сделал связку с JavaScript (сервер Tomcat), установленным UniFi. P.S. В будущем хочу сделать учет рабочего времени персонала по MAC-адресам смартфонов.
 
Есть ли какой-нибудь скрипт на PHP или JSP, который отображает оставшееся время и оставшийся лимит каждого клиента? Заранее спасибо!
 
Хотя здорово, что тебе удалось это запустить, я бы лично посоветовал потратить день-два, чтобы разобраться, как работает Linux, и потом запускать всё это на Linux-машине 😀 Обновления, вопросы безопасности и общая производительность, скорее всего, будут гораздо лучше. Я большой поклонник Windows как клиентской ОС и для Active Directory, но для всего, что хоть немного сложнее (как здесь), она рано или поздно умирает на каком-то этапе 🙁 Тем не менее, очень круто 😀
 
Я слежу за вашим постом и пытаюсь интегрировать PHP в нашу портальную систему, но застрял на этом моменте: при скачивании PHP/Java bridge нужно открыть .jar файл с помощью архиватора, например WinRar, или просто с помощью java jar. Затем извлечь папку 'WEB-INF' в новую папку.

На этом интеграция UniFi заканчивается! Очень просто!

Я скачал файлы JavaBridge.jar, php-script.jar и php-servlet.jar и положил их в папку PHP внутри моего webapps. Когда открываю файлы в Winrar, папки WEB-INF там нет. Есть папки php и META-INF.

Можете, пожалуйста, пояснить этот момент?

Спасибо, Дэниел.
Страницы: 1
Читают тему (гостей: 1)