从PHP运行adb

我从Ubuntu转移到CentOS,现在我有一个问题从PHP运行adb

我试图执行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,如果我尝试以root身份运行adb devices ,或者从命令行运行常规用户,它将返回所有连接的设备。

此configuration以前与Ubuntu一起工作。

有什么不同? 有什么build议么?

我要说的是,与SELinux相关的可能性有90%。 您可以通过查找/var/log/audit/audit.log条目来确认它。

CentOS默认启用SELinux。

从PHP脚本运行adb ,很可能在httpd的安全上下文中运行,不允许传出networking连接。

快速解决方法是允许httpd进行传出的networking连接:

 setsebool -P httpd_can_network_connect on 

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

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