我尝试为 Android(Android 2.3.3 和 Android 4.0.4。两者都存在错误。)交叉编译 PHP(尝试了许多版本。现在使用 5.3.8)。几乎一切工作正常。对我来说最重要的功能是执行一些 shell 命令,但它不起作用!例如这段代码
<?php
$s = shell_exec("ps");
echo $s;
?>
必须输出所有启动的进程,但实际上显示一个空白屏幕。我尝试了许多带有函数 system()、pastru() 和其他函数的变体。一切都是徒劳。在 php.ini disable_functions 为空,安全模式关闭。
在互联网上我发现与Android OS相关的popen()函数存在错误。但是我该如何解决这个问题?!我还发现了这个:所有与 exec 相关的 PHP 函数 segfault
这与我的情况类似。但是由于某些原因,作者没有写出他是如何纠正错误的。
更新:我想我知道出了什么问题。这个链接帮助了我:https ://bugs.php.net/bug.php?id=60081 。PHP 用于执行命令“/bin/sh”,但在 Android 上没有“/bin/sh”。“sh”位于“/system/bin/sh”中。我尝试复制“/system/bin/sh”->“/bin/sh”,一切正常。但现在有一个新问题。如何告诉PHP“sh”在哪里?