【问题标题】:Using php-cgi with webserver in android在 android 中使用 php-cgi 和 webserver
【发布时间】:2013-08-22 15:27:04
【问题描述】:

我发现我们可以通过访问 site 在 android 上运行 Phpcgi。我已经在 android 中创建了一个 Web 服务器,它工作正常,我已经安装了 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( );

guessConte....()

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();
         }

【问题讨论】:

    标签: java android sockets webserver php


    【解决方案1】:

    您可以使用ProcessProcessBuilder 类来创建和执行命令。请记住,根据您要执行的进程,您可能需要 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、纯文本)。

    但是,您可能需要 root 才能使其工作。或者当您从 APK 解压缩文件时,这些文件将没有执行权限(Linux 中的 x)。但是调用chmodchown(如果分配给错误的用户名)很可能需要root 的Android 设备。

    【讨论】:

    • 先生,你在脸书上吗?我已经成为你的忠实粉丝了
    • 我可以像在我的网络服务器请求处理器中那样做吗 检查请求的扩展名,如果它是 .php 而不是执行你的代码是否可以工作..如果你回复,我会接受你的回答。现在我赞成它:)
    • 您可以阅读这个 SO 问题的答案:stackoverflow.com/a/3571239/455493 通常在 StackOverflow 上,一个问题对一个问题使用一个问题,并在它们不完全相关时开始新问题。
    • 当然,在进行扩展检查之前,您必须初始化 phpFile 变量。它会起作用吗?试试看。但是Process 是执行不属于 Andorid 或其框架的某些内容的方法。
    • 你能告诉我关于使用输出流发送响应吗
    猜你喜欢
    • 2014-10-03
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 2014-06-18
    • 2015-07-28
    • 2012-11-06
    • 1970-01-01
    相关资源
    最近更新 更多