我从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设备等,但这是很多工作…