从 PHP 运行 adb

从 PHP 运行 adb

我从 Ubuntu 转到 CentOS,现在运行adbPHP 时遇到了问题。

我正在尝试执行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 上使用。

有什么区别?有什么建议吗?

答案1

我认为有 90% 的可能性与 SELinux 有关。您可以通过查找 中的条目来确认/var/log/audit/audit.log

CentOS 默认启用 SELinux。

当您从 PHP 脚本运行时adb,它很可能在httpd的安全上下文中运行,这不允许传出网络连接。

快的修复方法是允许httpd建立传出网络连接:

setsebool -P httpd_can_network_connect on

请记住,这将允许到任何地方的传出连接。

安全的修复方法是编写一个本地策略来限制adb并允许它连接到端口 5037、访问 USB 设备等,但这是一个很多工作的...

相关内容