2013-08-20 4 views
0

J'ai trouvé que nous pouvons exécuter Phpcgi sur android en allant à ce site. J'ai créé un serveur web dans Android il fonctionne très bien et j'ai installé Php CGI et je veux demander comment Je relie les deux afin que je puisse exécuter des scripts PHP ainsi que des pages HTML. Toute aide sera appréciée.En utilisant php-cgi avec serveur web dans android

Mise à jour:

Dans ma demande processeur OUT est envoyé comme ceci:

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

Répondre

2

Vous pouvez utiliser le Process et ProcessBuilder classes pour créer et exécuter une commande. Gardez à l'esprit que selon le processus que vous souhaitez exécuter, vous pouvez avoir besoin d'autorisations root et cela ne fonctionnera pas sur les appareils Android non rootés.

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

Ne soyez pas dérouté par le nommage. Selon la documentation ProcessgetInputStream() renvoie la sortie du flux connecté au std::out. Cela retournera le code (Json, HTML, texte brut) généré par le PHP. Cependant, il y a de fortes chances que vous ayez besoin de root pour que cela fonctionne. Ou que les fichiers n'auront pas l'autorisation d'exécution (x sous Linux) lorsque vous les décompressez de votre fichier APK. Mais appeler chmod ou chown (s'il est attribué au mauvais nom d'utilisateur) exigera probablement des appareils Android enracinés.

+1

monsieur sont u sur facebook je suis devenu un grand fan de toi – Prakhar

+0

je peux le faire comme dans mon serveur web RequestProcessor vérifier l'extension de la demande si elle est .php que l'exécution de votre code ça marche ... et s'il vous plaît répondez je vais accepter votre réponse si vous répondez.et maintenant je l'ai upvoted :) – Prakhar

+0

Vous pouvez lire la réponse à cette question SO: http://stackoverflow.com/a/3571239/455493 En général, sur StackOverflow on utilise une question pour un problème et en commence de nouvelles quand elles ne sont pas complètement liées. – Tseng

Questions connexes