Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Форум
    RouterOS
    Проблемы с подключением к PHP API?

    Проблемы с подключением к PHP API?

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Проблемы с подключением к PHP API?, RouterOS
     
    UGP2
    Guest
    #1
    0
    14.04.2011 18:40:00
    Я использую PHP API и получаю такую ошибку: http://wiki.mikrotik.com/wiki/API_PHP_class Попытка подключения №5 к IP:8728… Ошибка… В чём моя проблема? Нужно ли включить какую-то функцию?
     
     
     
    c1audiu
    Guest
    #2
    0
    09.01.2015 13:11:00
    Когда я запускаю PHP-скрипт из командной строки, всё работает:
    sudo -u apache php script.php  
    Попытка подключения #1 к mikrotik_ip:8728…  
    <<< [6] /login
    [5/5] байт прочитано. [5, 39]!done
    [37/37] байт прочитано. [37, 1]=ret=d2b0464485a7688758f2503d7346a2a5
    <<< [6] /login
    <<< [9] =name=api
    <<< [44] =response=007d865b5e7ad498684367513f8707e9f9
    [5/5] байт прочитано. [5, 1]!done
    Подключено…  
    <<< [18] /system/script/run
    <<< [12] =.id=script_name
    [5/5] байт прочитано. [5, 1]!done
    Отключено…

    Когда я запускаю тот же скрипт в Chrome, получаю:  
    “Попытка подключения #1 к mikrotik_ip:8728…  
    Попытка подключения #2 к mikrotik_ip:8728…  
    Попытка подключения #3 к mikrotik_ip:8728…  
    Попытка подключения #4 к mikrotik_ip:8728…  
    Попытка подключения #5 к mikrotik_ip:8728…  
    Ошибка…”

    Скрипт, который я использую:  
    <?php  
    require('routeros_api.class.php');  
    $API = new routeros_api();  
    $API->debug = true;  
    if ($API->connect('mikrotik_ip','user','password')) {  
       $API->write('/system/script/run', false);  
       $API->write("=.id=script_name");  
       $API->read(false);  
       $API->disconnect();  
    }  
    ?>

    Права и владельцы:  
    -rwxrwxrwx. 1 apache apache script.php
     
     
     
    boen_robot
    Guest
    #3
    0
    13.01.2015 18:01:00
    @c1audiu @UGP2 Попробуйте PHAR из моей подписи. В частности, сначала попробуйте запустить его из командной строки так: php PEAR2_Net_RouterOS-1.0.0b5.phar mikrotik_ip user password и посмотрите, какие ошибки, если они есть, появятся. Если при этом можно спокойно вводить команды, значит соединение установлено, и проблема точно не на стороне роутера. Выйти можно командой “/quit” с двойным нажатием Enter. Теперь… Если это работает, попробуйте выполнить тестовый кусок PHP-кода, например: <?php
    use PEAR2\Net\RouterOS;
    require_once 'PEAR2_Net_RouterOS-1.0.0b5.phar';

    try {
       $client = new RouterOS\Client('mikrotik_ip', 'user', 'password');
       echo 'OK';
    } catch (Exception $e) {
       die($e);
    } И посмотрите, выведет ли он «OK». Если не выведет, а вышеуказанные команды работали, скорее всего, проблема в фаерволе веб-сервера. В зависимости от того, какое SAPI использует PHP, нужно разрешить исполняемому файлу Apache («httpd», кажется) или исполняемому файлу PHP («php-cgi») устанавливать исходящие соединения. Или же разрешить ЛЮБОМУ приложению делать исходящие подключения на порт 8728.
     
     
     
    c1audiu
    Guest
    #4
    0
    14.01.2015 12:30:00
    @boen_robot Спасибо за ответ. Скачал PEAR2_Net_RouterOS-1.0.0b5.phar и запускаю #php script.php //код script.php
    <?php
    use PEAR2\Net\RouterOS;
    require_once 'PEAR2_Net_RouterOS-1.0.0b5.phar';

    try {
       $client = new RouterOS\Client('mikrotik_ip', 'user', 'password');
       echo 'OK';
    } catch (Exception $e) {
       die($e);
    } В CLI получаю ответ «OK». Не думаю, что проблема в соединении. Как я писал в первом сообщении, при запуске php-скрипта из CLI скрипт на mikrotik выполняется. А вот из браузера запустить скрипт не получается. Я даже пробовал ставить права chown -R 777 на public_folder. И запуск скрипта под пользователем apache из CLI работает…
     
     
     
    boen_robot
    Guest
    #5
    0
    15.01.2015 11:52:00
    Но если запустить скрипт из веб-браузера, ты получаешь «OK»? Вот в этом и была суть. PHP использует другой исполняемый файл, когда запускается с веб-сервера. Если из браузера вы не видите «OK», то должно появиться сообщение об ошибке, которое подскажет, в чем проблема. Если ошибка есть, выложи её, пожалуйста.
     
     
     
    c1audiu
    Guest
    #6
    0
    15.01.2015 12:00:00
    Когда скрипт выполняется в Chrome, возникает исключение 'PEAR2\Net\Transmitter\SocketException' с сообщением 'stream_socket_client(): не удалось подключиться к tcp://mikrotik_ip:8728/user%2Fpassword (Отказано в доступе)' в phar:///var/www/public_html/PEAR2_Net_RouterOS-1.0.0b5.phar/PEAR2_Net_RouterOS-1.0.0b5/src/PEAR2/Net/Transmitter/TcpClient.php:205 Трассировка стека: #0 phar:///var/www/public_html/PEAR2_Net_RouterOS-1.0.0b5.phar/PEAR2_Net_RouterOS-1.0.0b5/src/PEAR2/Net/Transmitter/Stream.php(130): PEAR2\Net\Transmitter\TcpClient->createException('stream_socket_c...', 0) #1 [внутренняя функция]: PEAR2\Net\Transmitter\Stream->handleError(2, 'stream_socket_c...', 'phar:///var/www...', 147, Array) #2 phar:///var/www/public_html/PEAR2_Net_RouterOS-1.0.0b5.phar/PEAR2_Net_RouterOS-1.0.0b5/src/PEAR2/Net/Transmitter/TcpClient.php(147): stream_socket_client('tcp://10.11.12....', 13, 'Permission deni...', '60', 4, Resource id #15) #3 phar:///var/www/public_html/PEAR2_Net_RouterOS-1.0.0b5.phar/PEAR2_Net_RouterOS-1.0.0b5/src/PEAR2/Net/RouterOS/Communicator.php(148): PEAR2\Net\Transmitter\TcpClient->__construct('mikrotik_ip', 8728, false, NULL, 'user/04J650ej1y2...', '', NULL) #4 phar:///var/www/public_html/PEAR2_Net_RouterOS-1.0.0b5.phar/PEAR2_Net_RouterOS-1.0.0b5/src/PEAR2/Net/RouterOS/Client.php(146): PEAR2\Net\RouterOS\Communicator->__construct('mikrotik_ip', 8728, false, NULL, 'user/04J650ej1y2...', '', NULL) #5 /var/www/public_html/script.php(6): PEAR2\Net\RouterOS\Client->__construct('mikrotik_ip', 'user', 'password') #6 {main} Следующее исключение 'PEAR2\Net\Transmitter\SocketException' с сообщением 'Не удалось подключиться через сокет.' в phar:///var/www/public_html/PEAR2_Net_RouterOS-1.0.0b5.phar/PEAR2_Net_RouterOS-1.0.0b5/src/PEAR2/Net/Transmitter/TcpClient.php:205 Трассировка стека: #0 phar:///var/www/public_html/PEAR2_Net_RouterOS-1.0.0b5.phar/PEAR2_Net_RouterOS-1.0.0b5/src/PEAR2/Net/Transmitter/TcpClient.php(163): PEAR2\Net\Transmitter\TcpClient->createException('Failed to conne...', 8, Object(PEAR2\Net\Transmitter\SocketException)) #1 phar:///var/www/public_html/PEAR2_Net_RouterOS-1.0.0b5.phar/PEAR2_Net_RouterOS-1.0.0b5/src/PEAR2/Net/RouterOS/Communicator.php(148): PEAR2\Net\Transmitter\TcpClient->__construct('mikrotik_ip', 8728, false, NULL, 'user/04J650ej1y2...', '', NULL) #2 phar:///var/www/public_html/PEAR2_Net_RouterOS-1.0.0b5.phar/PEAR2_Net_RouterOS-1.0.0b5/src/PEAR2/Net/RouterOS/Client.php(146): PEAR2\Net\RouterOS\Communicator->__construct('mikrotik_ip', 8728, false, NULL, 'user/04J650ej1y2...', '', NULL) #3 /var/www/public_html/script.php(6): PEAR2\Net\RouterOS\Client->__construct('mikrotik_ip', 'user', 'password') #4 {main} Следующее исключение 'PEAR2\Net\RouterOS\SocketException' с сообщением 'Ошибка подключения к RouterOS' в phar:///var/www/public_html/PEAR2_Net_RouterOS-1.0.0b5.phar/PEAR2_Net_RouterOS-1.0.0b5/src/PEAR2/Net/RouterOS/Communicator.php:150 Трассировка стека: #0 phar:///var/www/public_html/PEAR2_Net_RouterOS-1.0.0b5.phar/PEAR2_Net_RouterOS-1.0.0b5/src/PEAR2/Net/RouterOS/Client.php(146): PEAR2\Net\RouterOS\Communicator->__construct('mikrotik_ip', 8728, false, NULL, 'user/04J650ej1y2...', '', NULL) #1 /var/www/public_html/script.php(6): PEAR2\Net\RouterOS\Client->__construct('mikrotik_ip', 'user', 'password') #2 {main}
     
     
     
    boen_robot
    Guest
    #7
    0
    15.01.2015 12:14:00
    OK… Сообщение stream_socket_client('tcp://10.11.12....', 13, 'Permission deni...', '60', 4, Resource id #15) похоже подтверждает то, что я говорил ранее — проблема именно в файрволе веб-сервера. Сообщение от stream_socket_client() — «Permission denied», то есть ОС в конечном итоге запрещает установку соединения. Файрвол есть, и он разрешает исполняемому файлу «php» делать исходящие подключения… Но, похоже, не разрешает это исполняемым файлам Apache или «php-cgi». Попытка гуглить эту ошибку вывела меня на обсуждение в StackOverflow, где предлагают, что причиной может быть SELinux — по умолчанию он блокирует любые исходящие подключения от Apache, поскольку Apache «обычно» их не делает. Однако если PHP работает как модуль Apache, то любое соединение из PHP выполняется внутри процесса Apache. Значит, чтобы решить проблему, нужно либо отключить SELinux, либо настроить его так, чтобы разрешить исходящие подключения, как показано в указанной ссылке.
     
     
     
    c1audiu
    Guest
    #8
    0
    15.01.2015 12:30:00
    @boen_robot Похоже, проблема была в selinux. Большое спасибо за помощь.
     
     
     
    yannick
    Guest
    #9
    0
    22.06.2018 02:55:00
    Привет, появилась такая ошибка: Parsing проходит успешно, если ты это видишь… Файл включён!.. Соединение НЕУДАЧНО! Подробности: исключение ‘PEAR2\Net\Transmitter\SocketException’ с сообщением ‘stream_socket_client(): невозможно подключиться к tcp://10.0.34.53:8728 (Доступ запрещён)’ в /var/www/html/PEAR2_Net_RouterOS-1.0.0b6/src/PEAR2/Net/Transmitter/TcpClient.php:225. У меня CentOS7, как это исправить?
     
     
     
    boen_robot
    Guest
    #10
    0
    22.06.2018 14:37:00
    Попробуйте ответы в сообществе StackOverflow по ссылке выше.
     
     
     
    yannick
    Guest
    #11
    0
    22.06.2018 17:55:00
    Спасибо, я внимательно прочитал и отключил SELinux, теперь всё работает нормально. Давайте начнём с большего количества примеров по API/PHP.
     
     
     
    crispaz
    Guest
    #12
    0
    15.10.2019 01:30:00
    Привет, я использую этот код, и он отлично работает с CCR1009 6.44.3 (stable), RB3011 6.44.5 (long term) и RB941. Моя проблема в том, что при использовании на Hex RB750 Gr3 6.44.5 он не работает. В логах пишется: system,error,critical login failure from user from ip via api. Пожалуйста, помогите. Заранее спасибо.

    <?php
    require('routeros_api.class.php');
    $API = new RouterosAPI();
    $API->debug = false;

    if ($API->connect('routerip','user','password')) {

       $API->write('/ip/hotspot/ip-binding/print', false);
       $API->write('=count-only=', false);
       $API->write('~active-address~"1.1."');
       $ARRAY = $API->read();

       $API->disconnect();
    }
    ?>
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры