Apache-2.2
從 PHP 執行 adb
我從 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 設備等,但這是很多工作……