Назад | Перейти на главную страницу

Запуск adb из PHP

Я перешел с Ubuntu на CentOS, и теперь у меня проблема с запуском adb из PHP.

Я пытаюсь выполнить shell_exec("/path/to/adb devices");

и я получаю:

ADB server didn't ACK
failed to start daemon
error cannot connect to daemon
daemon not running. starting it now on port 5037

Конечно adb не может запуститься, потому что он уже запущен и прослушивает порт 5037, и если я попытаюсь запустить adb devices как root или как обычный пользователь из командной строки возвращает все подключенные устройства.

Эта конфигурация ранее работала с Ubuntu.

В чем разница? Какие-либо предложения?

Я собираюсь сказать, что с вероятностью 90% это связано с SELinux. Вы можете подтвердить это, просмотрев записи в /var/log/audit/audit.log.

В CentOS по умолчанию включен SELinux.

Когда ты бежишь adb из вашего PHP-скрипта, он, скорее всего, работает под httpdконтекст безопасности, который не разрешает исходящие сетевые подключения.

В быстрый исправить это позволить httpd для исходящих сетевых подключений:

setsebool -P httpd_can_network_connect on

Имейте в виду, что это позволит исходящие соединения куда угодно.

В безопасный исправить - написать локальную политику, ограничивающую adb и позволяя ему подключаться к порту 5037, получать доступ к USB-устройствам и т. д., но это много работы ...