Archief - [PROG][JAVA] Runtime.getRuntime().exec & php.

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Blood_Raven

Legacy Member
Ik probeer dus de output te capturen die het programma php terug stuurt.
Maar dit wilt wegens één of andere manier niet werken.

Code:
Code:
String reply = "";
        try {
            Process p= Runtime.getRuntime().exec(phpmodule);
            PrintWriter or = new PrintWriter(p.getOutputStream());
            BufferedReader br = new BufferedReader(new InputStreamReader( p.getInputStream() ));

            or.println(" -f '"+folder+file+"'");
            or.close();

            p.waitFor();

            String line;
            while ( ( line = br.readLine() ) != null)
            {
                reply += line+"\n";
            } 
            br.close();

            System.out.println("Execution of: "+phpmodule+"\""+folder+file+"\""+"\n"+reply);

            sendReply("200 OK","text/html; charset=UTF-8",reply);
        } catch(Exception e) { System.out.println(e); }

Ik krijg dus altijd de volgende output: (met phpmodule "php", folder "/home/enira/www/" en file "test.php")

Code:
Execution of: php"/home/enira/www/test.php"
 -f '/home/enira/www/test.php'
Dit zegt dus dat de reply ' -f '/home/enira/www/test.php'' is. Wat ik dus niet snap is hoe het programma dit als reply kan geven.

Wanneer ik in de terminal dan "php -f '/home/enira/www/test.php' uitvoer krijg ik:
enira@enira-laptop:~$ php -f '/home/enira/www/test.php'
PHP works!
Dus aan het script(bevat alleen een echo "PHP works!"; ) ligt het zeker niet. Wat doe ik mis?
(Overigens heb ik volledige rechten om het bestand uit te voeren)

Code:
Process p= Runtime.getRuntime().exec(phpmodule+" -f '"+folder+file+"'");
Als ik dit gebruik krijg ik helemaal geen output.

Bavo aka Joske

Legacy Member
Je schrijft naar de buffer die eigenlijk de uitvoer is van het proces voor uw Java-app, dus lees je dat ook gewoon terug. Dat kan dus niet.

De oplossing ligt weldegelijk in je laatste voorbeeld, maar ergens gaat het fout. Ik had altijd wel succes als ik
Process
exec(String[] cmdarray, String[] envp, File dir)
Executes the specified command and arguments in a separate process with the specified environment and working directory.

gebruikte. Dus alle parameters mooi apart en een working dir gebruiken. Environment laat je gewoon leeg.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan