Ik draai php via apache op een windows pc hier thuis. Via php wil ik een extern console programma starten. Ik heb dit geprobeerd met exec, system, shell_exec en proc_open. Bij al deze methoden lukt het niet om de output van het programma uit te lezen.
Ik draai mijn php script via command, ik zie de output van het extern programma in mijn console, ik zie php zijn script afwerken en de variabel waar de output moet inzitten is leeg. Verder vraag ik nergens de output te tonen, maar toch zie ik die.
Ik heb ook al geprobeerd met Ob_start() en dergelijke, maar ik krijg deze functies nooit goed werkende.
Graag verdere hulp.
PS. het extern programma noemt mkvalidator, een console programmatje waarmee ik mkv bestanden kan controlleren.
Hoe bedoel je enkel op unix system? Ik heb exec al meerdere malen gebruikt om andere programma's uit te voeren via console en dit werkt perfect. Zolang het console programma's zijn.
Ik moet eerlijk bekennen dat het lang geleden is dat ik hier iets mee heb gedaan, maar wat ik bedoel is dat commando's zoals 'ls' e.d. niet op Windows werken. Wat voor output zou je precies willen krijgen bij het uitvoeren van mkvalidator.exe?
Op UNIX platforms geeft exec de gebruiker terug van de draaiende pid.
Nu wil ik dit programma oproepen van uit php en zijn output ook verwerken vanuit php. Als ik dit php script aanvoer ben ik niet geïnteresseerd in de uitvoer van mkvalidator.exe maar enkel in de interpretatie van php. Dit lukt mij tot nu toe niet.
Als het naar stderr geschreven wordt zul je het anders op moeten vangen. In linux is dit shell_exec('command.sh 2>&1'); zo zorg je dat stderr naar stdout wordt geschreven. In Windows heb ik geen idee omdat ik nooit ontwikkel in PHP op een Windows machine..
Normaal kan je met proc_open zowel stderr en stdout opvragen. Echter wanneer ik het op die manier doet krijg ik het zelfde probleem als met exec en system.
Het is alsof php even stopt, het programma uitvoert in de console LOS van php en dan verder doet met het php script. Alle output of error's zijn leeg in php, het is alsof het programma gewoon geen uitvoer heeft gehad. Terwijl in een console ik de uitvoer wel zie (ook al vroeg ik dit niet).
Voorbeeld (in console):
>php test.php
script begonnen...
10 error's // dit is de output van mkvalidator, die zou hier niet mogen komen
script klaar, output van extern programma = ''
>
//Edit
Ik zal bovenstaande manier vanavond proberen als ik thuis ben, bedankt.