我发现我们可以通过访问这个网站在android上运行Phpcgi。我已经在android中创建了一个网络服务器,它运行良好,我已经安装了Php-cgi,并想问我如何链接两者,以便我可以运行Php脚本以及HTML页面任何帮助都将不胜感激
更新:
在我的请求处理器中,输出是这样发送的:
contentType = guessContentTypeFromName(filename);
Date now = new Date( );
out.write("Date: " + now + "'r'n");
out.write("Server: JHTTP/1.0'r'n");
out.write("Content-length: " + theData.length + "'r'n");
out.write("Content-type: " + contentType + "'r'n'r'n");
out.flush( );
留言板。。。。()
if (name.endsWith(".php")) {
String pathToPhpExecutable = Environment.getExternalStorageDirectory() + "/data" + "/php-cgi";
String phpFile ="" + "/php/myPhpFile.php";
Process process = null;
try {
process = new ProcessBuilder()
.command(pathToPhpExecutable, phpFile)
.redirectErrorStream(true)
.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
} finally {
process.destroy();
}
您可以使用Process
和ProcessBuilder
类来创建和执行命令。请记住,根据您想要执行的进程,您可能需要root权限,并且它在非root Android设备上不起作用。
String pathToPhpExecutable = getFileDir() + "/php-cgi";
String phpFile = getFileDir() + "/php/myPhpFile.php";
Process process = new ProcessBuilder()
.command(pathToPhpExecutable, phpFile)
.redirectErrorStream(true)
.start();
try {
InputStream in = process.getInputStream();
// Read the input stream and i.e. display the results in a WebView
} finally {
process.destroy();
}
不要被命名弄糊涂了。根据Process
文档,getInputStream()
返回连接到std::out
的流的输出。这将返回PHP生成的代码(Json、HTML、纯文本)。
然而,你很可能需要根才能让它发挥作用。或者,当您从APK中解压缩文件时,这些文件将没有执行权限(在Linux中为x)。但是调用chmod
或chown
(如果分配给错误的用户名)很可能需要一个根Android设备。
- 流程| Android开发者